存储过程语法

时间:2020-03-06 14:35:24  来源:igfitidea点击:

我的存储过程从下面的SQL Server 2005的SQL指令包中调用

执行? = Validation.PopulateFaultsFileDetails吗? ,0

虽然我不确定是什么?方法

解决方案

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

调用此SQL语句时,两个问号(?)将被替换。第一个将被变量替换,该变量将接收存储过程的返回值。第二个将替换为一个值,该值将传递到存储过程中。使用此语句的代码如下所示(伪代码):

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

这给我们3个优点:

  • 我们可以以不同的值重复使用相同的SQL位
  • 我们可以选择返回值并测试成功/错误
  • 如果我们传入的值是一个字符串,则应该为我们正确地对其进行转义,以减少应用程序中SQL注入漏洞的风险。

谢谢,我感谢你的回答。

我能够成功使用执行存储过程
声明@FaultsFileName varchar
宣告@FaultsFileID int
EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails'SameMonth Test.txt',@FaultsFileID
选择@FaultsFileID

但是,当我在集成包中将输入参数传递为" SameMonth Test.txt"时,出现错误消息:

参数名称不能是序数类型和命名类型的混合。