如何添加到存储过程调用选定的值

时间:2013-08-16 14:12:49

标签: sql sql-server

大家好,我们选择存储过程(myProc):

SELECT @body = 'User: ' + @admin_username  + ' set Admin role TO: ' + [username] 
FROM [dbo].[users]
WHERE [id] = @user_id;

并希望在当前过程

中的另一个存储过程调用中添加@body
exec sendMail '','',@body

怎么做? @body类型为nvarchar(max)我认为我选错了因为当我执行我的程序时出错:无法插入空值

2 个答案:

答案 0 :(得分:1)

确保您的@Admin_Username和[Username]不返回null,否则您的整个@body变量将以NULL结尾。

尝试这样的事情:

SELECT @body = 'User: ' + ISNULL(@admin_username, '')  + ' set Admin role TO: ' + ISNULL([username], '')
FROM [dbo].[users]
WHERE [id] = @user_id;


exec sendMail '','',@body

答案 1 :(得分:0)

如果给定user_id的username列为null,则@body将返回NULL。使用ISNULL([username],'')至少为用户名返回一个空字符串。

还尝试使用OUTPUT参数将@body返回到下一个存储过程。请参阅:http://technet.microsoft.com/en-us/library/ms187004(v=sql.105).aspx