0

大家好,在存储过程(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)我认为我选择错误,因为当我执行我的程序时出现错误:无法插入空值

4

2 回答 2

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
于 2013-08-16T14:16:20.967 回答
0

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

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

于 2013-08-16T14:18:55.480 回答