我正在尝试在MSSQL上编译这个存储过程:
ALTER PROCEDURE [dbo].[sp_Notice_insert]
@type text,
@message text
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO tbl_Notices (id, type, message)
VALUES (NewID(), @type, @message);
DECLARE @noticeid uniqueidentifier;
SET @noticeid = SCOPE_IDENTITY();
INSERT INTO tbl_NoticesInbox (userid, noticeid)
(SELECT id, @noticeid FROM tbl_User WHERE role='Staff');
END
GO
Run Code Online (Sandbox Code Playgroud)
它应该在一个表中插入"通知",然后在每个"员工"用户的收件箱表中插入"通知".但是在编译时我得到了这个错误:
操作数类型冲突:数字与uniqueidentifier不兼容
"角色"字段是nbarchar(10)我尝试N'Staff'的值,但我得到了相同的错误.它没有说哪些类型实际上是冲突的.我究竟做错了什么?
问题是SCOPE_IDENTITY()返回输入到IDENTITY当前作用域内的列的最后一个值,因此默认情况下返回一个数值.
在我看来,你想创建一个NEWID()并使用它来插入标题和相关记录:
DECLARE @noticeid uniqueidentifier;
SET @noticeid = NEWID();
INSERT INTO tbl_Notices (id, type, message)
VALUES (@noticeid , @type, @message);
INSERT INTO tbl_NoticesInbox (userid, noticeid)
(SELECT id, @noticeid FROM tbl_User WHERE role='Staff');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2183 次 |
| 最近记录: |