我有此存储过程,出于调试目的,我想知道要返回什么值,为此,我创建了一个表并记录了从查询返回的值,但是我不确定如何获取loggin的select语句中的值。
我的存储过程(为演示而修改):
BEGIN
DECLARE @SID INT
BEGIN TRY
SELECT
SL.[Column1], SL.[Column2], SL.[Column3],
SMD.[Column4], SMD.[Column5]
(some more logic)
BEGIN
DECLARE @ProcedureName6 NVARCHAR(168) = 'dbo.MYSP',
@ErrorMessage6 NVARCHAR(4000)
SELECT @ErrorMessage6 = 'SID is:' + CAST(@SID AS VARCHAR)
EXEC [Log].[ErrorLoger] @ProcedureName6, @ErrorMessage6
END
END TRY
BEGIN CATCH
//Some Logic
END CATCH
END
我实际上希望在SL.[Column2]
中设置@SID
进行记录。
答案 0 :(得分:0)
如果查询有多个结果返回,则可以将结果插入到临时表中。从那里,从临时表中获取所需的值,然后执行ErorrLogger SP。
INSERT INTO #TEMP ( Column1, Column2, . . .)
SELECT SL.[Column1]
,SL.[Column2]
,SL.[Column3]
,SMD.[Column4]
,SMD.[Column5]
(Some more logic)
-- Get the value of @SID from temp table
SELECT @SID = Column2 FROM #TEMP
-- Return the result
SELECT Column1, Column2, . . .
FROM #TEMP
....
EXEC [Log].[ErrorLoger] @ProcedureName6
,@ErrorMessage6
您还可以使用多个变量(每个变量用于一列)来保存查询结果。前提是查询仅返回单行