【发布时间】:2017-09-16 13:56:29
【问题描述】:
我在尝试从存储过程返回唯一标识符时遇到此错误 - 有什么想法吗?
操作数类型冲突:uniqueidentifier 与 int 不兼容
代码:
CREATE PROCEDURE TEST
AS
RETURN NEWID()
【问题讨论】:
标签: sql-server
我在尝试从存储过程返回唯一标识符时遇到此错误 - 有什么想法吗?
操作数类型冲突:uniqueidentifier 与 int 不兼容
代码:
CREATE PROCEDURE TEST
AS
RETURN NEWID()
【问题讨论】:
标签: sql-server
存储过程只能“返回”INT(它的本意是用作状态码)。如果您想从存储过程中获取其他数据,您应该SELECT 它。从进行调用的代码中访问该数据可能会有些不同,但这就是您必须这样做的方式。
例如:
CREATE PROCEDURE Test
AS
SELECT NEWID()
【讨论】:
OUT 参数也可以工作,但通常使用起来更复杂(主要是因为它们不像SELECT 那样经常使用)。
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 函数中是不允许的。
【讨论】: