Sql 必须将参数编号4和后续参数传递为'@名称=值';
我有以下在SSMS中完美运行的存储过程Sql 必须将参数编号4和后续参数传递为'@名称=值';,sql,parameters,out,Sql,Parameters,Out,我有以下在SSMS中完美运行的存储过程 Create Store Proc MyTT SELECT MAX(TableName) as TableName, aco_code,acc_code, ctr_id,cte_id,usr_code, -- convert(datetime,convert(varchar,current_timestamp,112),112) Cast(DATEPART
Create Store Proc MyTT
SELECT
MAX(TableName) as TableName,
aco_code,acc_code,
ctr_id,cte_id,usr_code,
-- convert(datetime,convert(varchar,current_timestamp,112),112)
Cast(DATEPART(hour,current_timestamp) as varchar(3))+':'+ CAST(DATEPART(minute,current_timestamp) as varchar(3))as [Time]
INTO #AB
FROM
(
SELECT 'TM_ACO_Account_Comment'as TableName,
a.aco_code,
a.acc_code,
a.ctr_id,
a.cte_id,
a.usr_code
FROM
TM_ACO_Account_Comment a with(NOLOCK)
UNION ALL
SELECT 'TM_ACO_Account_Comment'as TableName,
b.aco_code,
b.acc_code,
b.ctr_id,
b.cte_id,
b.usr_code
FROM
[172.17.14.77].[IS_ND_BLAKE].[dbo].[TM_ACO_Account_Comment] b with(NOLOCK)
)zzz
GROUP BY aco_code,
acc_code,
ctr_id,
cte_id,
usr_code
HAVING COUNT(*) = 1
ORDER BY
aco_code
SELECT *
FROM
#AB
DROP TABLE #AB
但是,当我尝试在发送邮件的查询中包含该过程时,会出现以下错误:
必须通过参数4
我的邮件查询如下所示
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DBMail',
@recipients = 'mitch@domain.com',
@query = 'exec SP,`MYTT`
@execute_query_database = 'MYDB',
@subject = 'Work Order Count',
@attach_query_result_as_file = 1 ;
在
EXEC msdb.dbo.sp_send_dbmail
命令中,您似乎没有正确关闭此行中的字符串文字:
@query = 'exec SP,`MYTT`
它缺少一个结束符”
,也缺少一个逗号来分隔此参数和下一个参数:
@query = 'exec SP,`MYTT`',
但是,传递的查询本身看起来有点奇怪。您的存储过程名为MyTT
,如果您希望在传递给msdb.dbo.sp\u send\u dbmail
的查询中调用该存储过程,则指定的exec
语句不正确。大概应该是这样的:
@query = 'exec MyTT',
虽然也可以指定数据库和架构:
@query = 'exec YourDBName.YourSchema.MyTT',
我已经稍微更正了正确的名称,以便与您定义中的名称完全匹配。如果您的服务器的默认排序规则不区分大小写(这很可能),那么这可能是不必要的,但在这种情况下保持一致不会有什么坏处