试图从存储过程返回唯一标识符时,我会遇到此错误 - 思想?
操作数类型冲突:唯一的识别仪与int
不兼容
代码:
CREATE PROCEDURE TEST
AS
RETURN NEWID()
存储过程只能'返回' INT
(它将用作状态代码)。如果您想从存储过程中获取其他数据,则应使用SELECT
。从呼叫的代码中访问该数据可能会有所不同,但这就是您必须这样做的方式。
例如:
CREATE PROCEDURE Test
AS
SELECT NEWID()
SQL Server中的过程不返回值。。。好吧,有一个隐含的整数状态,但这不是您想要的。
也许您打算:
CREATE PROCEDURE TEST (
@out_id uniqueidentifier output
)
AS
BEGIN
SET @out_id = NEWID();
END;
或,也许您想定义一个函数:
CREATE FUNCTION TEST
RETURNS uniqueidentifier
BEGIN
RETURN NEWID();
END;
但是,我不相信您真的可以做到这一点,因为newid()
被认为具有副作用 - 并且在SQL Server函数中不允许使用。