【问题标题】:UPDATE with a stored procedure on SQL Server 2005在 SQL Server 2005 上使用存储过程更新
【发布时间】:2010-10-01 20:05:41
【问题描述】:
UPDATE users 
SET field = my_sp()

在 SQL Server 2005 中。显然我不能这样做,必须使用某种形式的 EXEC。谁能帮助我,让我知道该怎么做?这应该是一些简单的代表。

【问题讨论】:

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


    【解决方案1】:

    要赋值,你需要使用 sql 函数。从存储过程中赋值是不可能的。
    这是link 的创建方法。

    【讨论】:

    • 谢谢,我已转换为标量函数。您获得了接受标记,因为您提供了语法链接。
    【解决方案2】:

    你需要编写一个标量函数,它接受一些参数(甚至为零)并返回你需要的东西。

    【讨论】:

      【解决方案3】:

      您可以将存储过程的输出存储在临时表中,然后使用该临时表作为更新的基础。例如,下面的代码假设您的 proc 返回一个包含两个整数的记录集。

      create table #t (
          ColumnA int,
          ColumnB int
      )
      
      insert into #t
          (ColumnA, ColumnB)
          exec my_sp
      
      update u
          set field = t.ColumnB
          from users u
              inner join #t t
                  on u.UserID = t.ColumnA
      
      drop table #t
      

      【讨论】:

      • 聪明的解决方案,谢谢,但我已经转换成函数了。
      • @cookiecaper:这是更好的方法。我只是想提供另一种选择,以防您无法选择。
      猜你喜欢
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      相关资源
      最近更新 更多