SQLSERVER 在PROCEDURE 中动态执行SQL语句【EXEC】并获取

1.直接上代码

CREATE PROCEDURE [dbo].[TEST]
    
AS
BEGIN
    DECLARE 
        @con    nvarchar(50)='N8-4F',    --構建SQL需要的條件
        @sql        nvarchar(1000),--構建後的SQL語句
        @cnt        int,            --獲取執行結果值
        @curTmp    nvarchar(50)       
    
    
    --查詢滿足條件的個數
    SET @sql = 'SELECT @cnt = COUNT(*) FROM [EMPCARDHISTORY] WHERE 1=1 AND [AREA]='''+@con+'''' 
    EXEC sp_executesql @sql,N'@cnt int out',@cnt out  --可以獲得@cnt的值
    
    --演示SQL中有傳入參數
    SET @sql = ' SELECT @cnt = COUNT(*) FROM [EMPCARDHISTORY] WHERE 1=1 AND [AREA]=@con'
    EXEC sp_executesql @sql,N'@cnt int out,@con nvarchar(50)',@cnt out,@con
    
    --演示遊標
    SET @sql = ' DECLARE cur_getData FOR SELECT EMPNO FROM [EMPCARDHISTORY] WHERE 1=1 AND [AREA]=@'''+@con+''''
    EXEC(@sql)
    OPEN cur_getData        --該處的遊標是我們定義在@sql中的
    FETCH  NEXT FROM cur_getData INTO @curTmp
    WHILE @@FETCH_STATUS = 0
        BEGIN
            --xxxx
            FETCH  NEXT FROM cur_getData INTO @curTmp
        END
    
END

 

转载于:https://www.cnblogs.com/NemoWork/p/11060178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值