存储过程语法

时间:2008-09-23 09:46:31

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

我的存储过程如下所示从SQL Server 2005中的SQL instegartion包中调用

EXEC? = Validation.PopulateFaultsFileDetails? ,0

虽然我不确定是什么?装置

3 个答案:

答案 0 :(得分:1)

?代表变量,确切地说,是一个参数。首先 ?是存储过程的返回值,第二个是存储过程的第一个参数

答案 1 :(得分:1)

调用此SQL语句时,将替换两个问号(?)。第一个将被一个变量替换,该变量将接收存储过程的返回值。第二个将被一个将传递给存储过程的值替换。使用此语句的代码看起来像这样(伪代码):

dim result
SQL = "EXEC ? = Validation.PopulateFaultsFileDetails ? , 0"
SQL.execute(result, 99)    // pass in 99 to the stored proc
debug.print result

这为您提供了三个优势:

  1. 您可以使用不同的值重复使用相同的SQL
  2. 您可以获取返回值并测试成功/错误
  3. 如果您传入的值是字符串,则应该为您正确转义,从而降低应用中SQL注入漏洞的风险。

答案 2 :(得分:0)

谢谢,我很感激答案。

我能够使用成功执行存储过程 DECLARE @FaultsFileName varchar DECLARE @FaultsFileID int EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails'SameMonth Test.txt',@ .FaultsFileID SELECT @FaultsFileID

但是当我在Integration Package中将输入参数作为'SameMonth Test.txt'传递时,我收到一条错误消息:

参数名称不能是序数和命名类型的混合。“。可能的失败原因:查询问题,”ResultSet“属性设置不正确,参数设置不正确或连接未正确建立。