我只想问一个小问题:我有一个名为SP_CARGA_NUEVOS
的存储过程。
要使用此存储过程,我需要这种格式的字符串:'AD18010611'
。
字符串的最后4位数字是当前的月份和日期,所以不是手动更改值,而是编写了这个小查询:
SELECT
'AD1801' +
CONVERT(VARCHAR(2), GETDATE(), 101) +
CONVERT(VARCHAR(2), GETDATE(), 103)
返回AD18010611
但是当我尝试使用存储过程时,出现错误:
程序或功能' SP_CARGA_NUEVOS'需要参数' @ COMENTARIO',这是未提供的。
我的问题:有没有办法将select作为参数发送到存储过程?
提前致谢
编辑1:
我这样称呼SP
Exec dbo.SP_CARGA_NUEVOS select 'AD1801'+ convert(varchar(2), GETDATE(), 101) +
convert(varchar(2), GETDATE(), 103)
哪个不起作用。
正确的方法是:
Exec dbo.SP_CARGA_NUEVOS 'AD18010611'
答案 0 :(得分:1)
你不能在EXEC
的中间有表达式或选择 - 你需要首先选择你想要用于变量的值,并且然后调用你的存储过程 - 像这样:
DECLARE @Input VARCHAR(20);
SELECT @Input = 'AD1801' +
CONVERT(VARCHAR(2), GETDATE(), 101) +
CONVERT(VARCHAR(2), GETDATE(), 103)
EXEC dbo.SP_CARGA_NUEVOS @Input
答案 1 :(得分:0)
您无法直接使用查询输出调用存储过程,就像您在此处尝试的那样。请注意,在EXECUTE调用语法的描述中,参数用法定义为:
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
翻译,这表示您可以使用常量值,变量或接受默认值(如果有)。接受查询输出不是一种选择。