SQL Server:返回唯一的IDIDENDIFIER,操作数类型冲突:唯一的Indidentifier与INT不相容



试图从存储过程返回唯一标识符时,我会遇到此错误 - 思想?

操作数类型冲突:唯一的识别仪与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函数中不允许使用。

最新更新