Имена псевдонимов в выводе в процедуре SQL Server - PullRequest
0 голосов
/ 28 июня 2019

Я написал хранимую процедуру, объявив выходные переменные, и успешно выполнил. Но после его выполнения мне не нужен так называемый символ '@' в выводе.

Я использую SQL Server 2012.

CREATE PROCEDURE xyz
AS
    (@abc VARCHAR(100),
     @def VARCHAR(100) = NULL OUTPUT,
     @ghi INT = NULL OUTPUT,
     @message NVARCHAR(100) = NULL OUTPUT)
BEGIN
    SELECT 
        @def = def, @ghi = ghi 
    FROM
        alphabets  
    WHERE
        abc = @abc

    RETURN 1
END

BEGIN CATCH
   IF (ERROR_NUMBER() = 1205)
   BEGIN
       RAISERROR('DEADLOCK', 13, 51)
   END
   ELSE
       SELECT @message  = CONCAT (ERROR_NUMBER(), ERROR_MESSAGE(), 'FALSE' )
END CATCH    

Это мой код. Теперь, выполнив это, перейдя к обозревателю объектов в SQL Server и щелкнув правой кнопкой мыши на имени процедуры и выполнив его, взяв у нас значение входного параметра, он создаст следующий код и прекрасно его выполнит.

DECLARE @return_value INT,
        @def VARCHAR(100),
        @ghi VARCHAR(100),
        @message NVARCHAR(100)

EXEC @return_value = [dbo].[xyz] '1111',
            @def = @def OUTPUT,
            @ghi = @ghi OUTPUT,
            @message = @message OUTPUT

SELECT
    @def AS '@def',
    @ghi AS '@ghi' 

Фактический результат:

    @def   @ghi @message
    123    456

Желаемый результат:

    def    ghi  message
    123    456

Все, что я хочу, это удалить этот '@' из вышеприведенного вывода. Или я могу использовать псевдонимы в выходных параметрах процедуры самостоятельно, так что, даже если кто-то выполнит его, щелкнув правой кнопкой мыши имя процедуры в проводнике объектов в SQL Server 2012 и выполнив его?

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Спасибо за комментарии / ответы / идеи.Наконец, я решил ее, заполнив значения во временной таблице.Большое спасибо!Это то, что я сделал.

CREATE PROCEDURE xyz
AS
(@abc NVARCHAR(100),
)
BEGIN

Create #temp
(def Nvarchar(100),
 ghi Nvarchar(100),
Message Nvarchar(100)

  )


BEGIN
 insert into #temp (def, ghi)
   values  (SELECT def, ghi 
    FROM alphabets  WHERE abc = @abc)

END


BEGIN CATCH
IF (ERROR_NUMBER() = 1205)
   BEGIN
   RAISERROR('DEADLOCK', 13, 51)
   END
   ELSE
   SELECT @message  = CONCAT (ERROR_NUMBER(), ERROR_MESSAGE(), 'FALSE' )
END CATCH    

Insert into #temp (message) 
values (@message)

Select * from #temp

END
0 голосов
/ 28 июня 2019

Вероятно, лучший способ сделать это, но здесь вы идете! (например, удалив '@' при наложении псевдонимов?)

DECLARE @title VARCHAR(250)

SET @title = '@badNaming'

SELECT LTRIM(STUFF(@title, 1, 1, ''))

Результат: badNaming

Я использовал функцию stuff, чтобы начать с первого символа и заменить 1 символ пробелом. Затем использовал функцию LTrim, чтобы убрать любое пространство слева. Надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...