存储过程语法
时间: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"时,出现错误消息:
参数名称不能是序数类型和命名类型的混合。