sql - 如何根据另一个sp的多次输出执行一个sp多次

标签 sql sql-server

我有一个 sp,如下所示

ALTER PROCEDURE [dbo].[pPatAssessDel] 
    @IAllGUIDs nvarchar(max) ,
     @IPAsPatID UNIQUEIDENTIFIER,
     @IPAsOrgID UNIQUEIDENTIFIER,
     @IPAsOrgGrpID  UNIQUEIDENTIFIER

AS


declare @output TABLE(splitdata NVARCHAR(MAX) )

  DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(',', @IAllGUIDs) 
    WHILE @start < LEN(@IAllGUIDs) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@IAllGUIDs) + 1

        INSERT INTO @output (splitdata)  
        VALUES(SUBSTRING(@IAllGUIDs, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(',', @IAllGUIDs, @start)

    END 
  Declare @PAsID NVARCHAR(MAX)
  Set @PAsID =(select splitdata  From @output)

EXEC pDeleteTbl 'PatAssess',@IPAsOrgID,@IPAsOrgGrpID,@PAsID,@IPAsPatID

Delete From PatAssess where PAsRowGUID in (select splitdata  From @output) 
AND PAsPatID = @IPAsPatID

我需要执行
EXEC pDeleteTbl 'PatAssess',@IPAsOrgID,@IPAsOrgGrpID,@PAsID,@IPAsPatID

但是查询 (select splitdata From @output) 返回多个值,那么如何执行 pDeleteTbl 查询......提前致谢

最佳答案

你必须使用光标

ALTER PROCEDURE [dbo].[pPatAssessDel] 
    @IAllGUIDs nvarchar(max) ,
     @IPAsPatID UNIQUEIDENTIFIER,
     @IPAsOrgID UNIQUEIDENTIFIER,
     @IPAsOrgGrpID  UNIQUEIDENTIFIER

AS






declare @output TABLE(splitdata NVARCHAR(MAX) )

  DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(',', @IAllGUIDs) 
    WHILE @start < LEN(@IAllGUIDs) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@IAllGUIDs) + 1

        INSERT INTO @output (splitdata)  
        VALUES(SUBSTRING(@IAllGUIDs, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(',', @IAllGUIDs, @start)

    END 
declare @IPAsID nvarchar(max)
declare cur CURSOR LOCAL for
    select splitdata  From @output

open cur

fetch next from cur into @IPAsID

while @@FETCH_STATUS = 0 BEGIN


    EXEC pDeleteTbl 'PatAssess',@IPAsOrgID,@IPAsOrgGrpID,@IPAsID,@IPAsPatID

    fetch next from cur into @IPAsID
END

close cur
deallocate cur  

Delete From PatAssess where PAsRowGUID in (select splitdata  From @output) 
AND PAsPatID = @IPAsPatID

关于sql - 如何根据另一个sp的多次输出执行一个sp多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35177794/

相关文章:

c# - Dapper 调用存储过程并将结果映射到类

mysql - Knex.js MYSQL WHERE 或 UNION

sql - 从具有特定值的表中获取列名

sql-server - Sql服务器-根据另一列查找列的范围

sql - 使用和不使用连接的查询性能

sql - 添加包含来自联接的数据的新列

mysql - JOIN 2 Tables 和 SELECT more cell

sql - Rails 嵌套连接与包含嵌套连接表计数的 where

使用 str_to_date 从 .txt 文件读取日期类型时出现 mysql 问题

c# - 尝试插入两个字母的字符时,指定的转换无效