MSSQL(Sql Server)从拼接的语句和存储过程中取出变量的值

(MSSQL(Sql Server)从拼接的语句和存储过程中取出变量的值,供当前上下文使用


1.某拼接的语句中,要把@sql中计算出的两个值@record1,@record2取出来供下文使用。

EXEC('
    SELECT @record1=1000
    SET @record2=1002 ');


方法如下:

DECLARE @count1 INT,@count2 INT
DECLARE @sql NVARCHAR(200) -- 这里要使用NVARCHAR
         
SET @sql='
    SELECT @record1=1000
    SET @record2=1002 '
             
EXEC sp_executesql @sql,N'@record1 int out,@record2 int out',@count1 OUT,@count2 OUT
SELECT @count1,@count2 --输出结果1000,1002
    
--其它代码...


2.在一个存储过程中,取另一个存储过程里计算完的某两个变量的值,返回给当前的存储过程使用。

某个简单的存储过程SP_Test如:

CREATE PROC SP_Test
(
     @record1 int
    ,@record2 int
)
AS
BEGIN
    SELECT @record1=1000 --赋值方式1
    SET @record2=1002 --赋值方式2
END
GO



在另一存储过程中想要调用 @record1,@record2的值,这时,给要输出的参数添加out如下

CREATE PROC SP_Test
(
     @record1 int out
    ,@record2 int out
)
AS
BEGIN
    SELECT @record1=1000
    SET @record2=1002
END
GO


此时,比如在另一个存储过程或sql中调用SP_Test,如下:

DECLARE @count1 INT,@count2 INT
EXEC SP_Test @count1 OUT,@count2 OUT
     
--输出结果1000,1002 即SP_Test中@record1,@record2的值。
SELECT @count1,@count2 
    
--其它代码...

有点类似函数。

类别:数据库   阅读(0)   评论(0)    发表时间:2017-02-15 20:58  星期三

评论区

发表评论

        姓名:
邮箱|网站:
        内容:

  (可按Ctrl+Enter提交)