我想有这个过程,因为能够得到UNIQUEIDENTIFIER
值的输出正常工作,但是当我尝试执行它给我的错误查询操作数类型冲突:int与uniqueidentifier不兼容。如何使唯一标识符的OUTPUT
操作数类型冲突:int与uniqueidentifier不兼容
我尝试过不同的事情,但无法找到解决方案。
这里是我的代码
-- =================================================
-- Example: [mob].[procedureName] 369, NULL, 23741, "somePath", "SomeName", "clientName", NULL
-- Example: [mob].[procedureName]
-- Example: [mob].[procedureName]
-- =================================================
ALTER PROCEDURE [mob].[uspInsertEmail]
(
@ParamCompany VARCHAR(50),
@ParamDate DATETIME,
@ParamCreatedBy VARCHAR(50),
@ParamFilePath VARCHAR(200),
@ParamFileName VARCHAR(100),
@ParamClientFileName VARCHAR(100),
@ParamGUID UNIQUEIDENTIFIER OUTPUT
)
AS
DECLARE @GUID UNIQUEIDENTIFIER=NEWID()
INSERT INTO [mob].[tblEmail]
(
[Company],
[GuidString],
[Date],
[CreatedBy]
)
VALUES
(
@ParamCompany,
@GUID,
@ParamDate,
@ParamCreatedBy
)
INSERT INTO [mob].[tblEmailAttachment]
(
[Email],
[FilePath],
[FileName],
[ClientFileName],
[CreatedBy]
)
VALUES
(
IDENT_CURRENT ('mob.tblEmail'),
@ParamFilePath,
@ParamFileName,
@ParamClientFileName,
@ParamCreatedBy
)
SELECT @GUID AS EmailGuid
SET @ParamGUID = @GUID
我读,我需要做的UNIQUEIDENTIFIER
是在OUTPUT
条款,但不知道究竟如何使@GUID
作为OUTPUT
你拥有它的方式将返回你的guid变量。如果您希望将其作为出站参数,则需要使用关键字OUTPUT将其定义在参数列表中。 –
顺便说一下,我建议在第二个插入语句中使用SCOPE_IDENTITY()而不是IDENT_CURRENT来避免并发问题。 –
感谢您的回应,但是即使我没有将该值作为参数传递,也会这样吗?因为它被声明和实例化为局部变量。 – AndresM