【问题标题】:execute stored procedures returned from database table执行从数据库表返回的存储过程
【发布时间】:2012-03-07 00:30:13
【问题描述】:

我正在使用 sql server 2008

我有一个数据库表,其中有一列包含存储过程名称。

我想查询返回存储过程名称列表的数据库表,并执行它们。

存储过程都类似,都有一个 select 语句。这条选择语句中返回的数据我想插入到数据库表中。

伪代码如下所示:

INSERT INTO MyTable
EXECUTE sp_executesql SELECT StoredProcedureName FROM Table

谁能帮助我用正确的 sql 来实现上述目标?

【问题讨论】:

    标签: sql sql-server sql-server-2008 stored-procedures


    【解决方案1】:

    sp_executesql 接受 unicode 字符串而不是 tsql 语句。所以你需要像这样执行你的程序:

    execute sp_executesql 'execute ' + @storedprocedurename 
    

    它将执行单个过程。

    您需要编写一些迭代过程来填充源表中的@storedprocedurename 变量。

    【讨论】:

      【解决方案2】:

      这与 @Coltech 仅使用光标回答几乎相同。

          DECLARE @spname VARCHAR(200)
          DECLARE @sql VARCHAR(1000)
      
          DECLARE your_cursor CURSOR FOR 
          SELECT spname
          FROM yourTable;
      
          OPEN your_cursor;
      
          FETCH NEXT FROM your_cursor 
          INTO @spname;
      
          WHILE @@FETCH_STATUS = 0
          BEGIN
              SET @sql = 'EXEC ' + @spname
      
              execute sp_executesql @sql
      
              FETCH NEXT FROM your_cursor 
              INTO @spname;
          END
          CLOSE your_cursor;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-16
        相关资源
        最近更新 更多