当前位置: 首页 > 面试题库 >

将选择结果作为存储过程的参数传递

卢景澄
2023-03-14
问题内容

我有一个带有以下参数的T-SQL存储过程

CREATE PROCEDURE [dbo].[SaveData]
-- Add the parameters for the stored procedure here
    @UserID varchar(50),
    @ServiceID varchar(50),
    @param1 varchar(50),
    @param2 varchar(50),
    @endDate datetime
AS BEGIN
    . 
    .
    -- my code --

我想知道是否可以通过selectas参数传递结果:

    exec SaveDate (SELECT player.UserID,player.ServiceID, 'no','no',GETDATE()
           FROM player)

我尝试了类似的方法,但是它不起作用。


问题答案:

您在示例中编写的SELECT查询可能会带回多行(您的SELECT不具有WHERE子句或TOP(n))。如果您打算让过程使用一组“表格”参数,那么从SQL
Server 2008开始,您可以使用表值参数。

这涉及到创建用户定义的表表,这无疑将意味着调整存储过程内部的逻辑



 类似资料:
  • 问题内容: 我有大约六种通用但相当复杂的存储过程和函数,我想以一种更通用的方式使用它们。 理想情况下,我希望能够将表名作为参数传递给过程,因为当前它是硬编码的。 我所做的研究表明,我需要将过程中所有现有的SQL转换为使用动态SQL,以便从参数中拼接动态表名称,但是我想知道是否还有一种更简便的方法可以通过另一种方式引用该表? 例如: 如果是这样,如何从表名设置@MyTable变量? 我正在使用SQL

  • 问题内容: 我正在创建一些存储过程来管理我的数据库。特别是,我想创建一个存储过程来编辑特定行的一列,但是我想通过将列名作为参数传递来做到这一点。 那就是我想做的 使用该参数,我找到了要编辑的特定行,并且我想使用该参数来仅编辑我想要的列。 正如我在其他主题上所读到的那样,我已经尝试使用或定义局部变量,但没有找到解决方案。 有什么帮助吗? 问题答案: 您将需要使用 动态SQL : 请注意,正如Paul

  • 我试图通过Oracle光标从python到Oracle存储过程(SP)。要求SP获取数据并将数据插入表中。SP取两个参数p1和p2 p1 以下是存储过程的详细信息: p2sys_refcursor,数据将以串联格式(col1|col2|...) 获取cur.callproc(“LIBRA.pt1,[linestr,result]”行中的“DatabaseError:ORA-01036:非法变量名称

  • 我正在尝试执行从hibernate到oracle表的插入操作。我的存储过程是:-

  • 问题内容: 我正在使用一个存储过程,在其中发送数据库中其类型为的存储过程,并且还声明parameter 。 当我将列名传递为float时,它给出了错误: 消息8114,将数据类型nvarchar转换为float时出错。 这是我的测试查询 当我将参数类型更改为时,它给了我这个错误: 消息8117,操作数数据类型varchar对avg运算符无效。 我该如何解决? 更新 : 这是我的存储过程: 问题答案

  • 问题内容: 关于是否可以做某事,以及是否将是最有效的做事方式,我有一个普遍的问题! 总结一下:我可以将对象集合作为参数传递给存储过程吗? 假设我有一个名为SQL Server的表 ,另一个名为 此设置是为了记录用户的多个爱好。 在我的应用程序中,我想更新用户记录。 通常-我将更新用户表,然后在代码中循环遍历每个爱好,并逐条记录更新爱好表记录。 如果我要更新用户的姓氏和他们的2个爱好,则需要对数据库