繁体   English   中英

将查询值分配给变量

[英]Assign query value to variable

将查询的返回值分配给存储过程中的变量真的很麻烦,这就是我所拥有的:

ALTER PROCEDURE [dbo].[sp_CreateTaskFromProposalStatusUpdate]
@proposalstatusupdateid uniqueidentifier

AS
BEGIN

DECLARE @owninguser uniqueidentifier
SET @owninguser = '07da8e53-74bd-459c-af94-a037897a51e3' -- todo set to salesperson

DECLARE @name nvarchar(300)
SET @name = 'test name'

DECLARE @accountid uniqueidentifier
DECLARE @accountcontacts varchar(100)

SET @accountid = NEWID()
SET @accountcontacts = CAST(@proposalstatusupdateid as VARCHAR(36))

DECLARE @proposalid uniqueidentifier
--SET @proposalid = (SELECT new_propstatusupdateid FROM new_proposalstatusupdate WHERE New_proposalstatusupdateId = @proposalstatusupdateid)
SELECT @proposalid = new_propstatusupdateid FROM new_proposalstatusupdate WHERE New_proposalstatusupdateId = @proposalstatusupdateid

INSERT INTO ActivityPointerBase
(OwningBusinessUnit,
ActivityId,
IsBilled,
CreatedBy,
[Description],
DeletionStateCode,
ModifiedOn,
ActivityTypeCode,
StateCode,
ScheduledEnd,
ScheduledDurationMinutes,
ActualDurationMinutes,
StatusCode,
ActualStart,
CreatedOn,
PriorityCode,
RegardingObjectId,
[Subject],
IsWorkflowCreated,
ScheduledStart,
ModifiedBy,
OwningUser,
RegardingObjectTypeCode,
RegardingObjectIdName,
TimeZoneRuleVersionNumber,
RegardingAccountId,
RegardingAccountTelephone)
VALUES
('C5B71CA7-1230-4D2A-8DEA-26184EA5E262',
NEWID(),
0,
@owninguser,
'002 Proposal {decision} with {funder} B',
0,
GETDATE(),
4212,
0,
GETDATE(),
0,
1,
1,
GETDATE(),
GETDATE(),
1,
@proposalid,
'002 Proposal {decision} with {funder} B',
0,
GETDATE(),
@owninguser,
@owninguser,
10011,
@name,
0,
@accountid,
@accountcontacts)

我尝试过两种方法尝试设置它但它们都导致@proposalidNULL

我检查了@proposalstatusupdateid参数是否正常,并且没问题,手动尝试查询总是返回结果。

不确定是什么问题。

谢谢

您需要返回该值或生成结果集

ALTER PROCEDURE [dbo].[sp_CreateTaskFromProposalStatusUpdate]
@proposalstatusupdateid uniqueidentifier

AS

DECLARE @proposalid uniqueidentifier
--SET @proposalid = (SELECT new_propstatusupdateid FROM new_proposalstatusupdate WHERE New_proposalstatusupdateId = @proposalstatusupdateid)
SELECT @proposalid = new_propstatusupdateid FROM new_proposalstatusupdate WHERE New_proposalstatusupdateId = @proposalstatusupdateid

SELECT @proposalid as new_propstatusupdateid

你可以使用输出参数

    ALTER PROCEDURE [dbo].[sp_CreateTaskFromProposalStatusUpdate]
    @proposalstatusupdateid uniqueidentifier,
    @Proposalid_out out

    AS
    BEGIN

    DECLARE @owninguser uniqueidentifier
    SET @owninguser = '07da8e53-74bd-459c-af94-a037897a51e3' -- todo set to salesperson

    DECLARE @name nvarchar(300)
    SET @name = 'test name'

    DECLARE @accountid uniqueidentifier
    DECLARE @accountcontacts varchar(100)

    SET @accountid = NEWID()
    SET @accountcontacts = CAST(@proposalstatusupdateid as VARCHAR(36))

    DECLARE @proposalid uniqueidentifier
    --SET @proposalid = (SELECT new_propstatusupdateid FROM new_proposalstatusupdate WHERE New_proposalstatusupdateId = @proposalstatusupdateid)
    SELECT @proposalid = new_propstatusupdateid FROM new_proposalstatusupdate WHERE New_proposalstatusupdateId = @proposalstatusupdateid

    INSERT INTO ActivityPointerBase
    (OwningBusinessUnit,
    ActivityId,
    IsBilled,
    CreatedBy,
    [Description],
    DeletionStateCode,
    ModifiedOn,
    ActivityTypeCode,
    StateCode,
    ScheduledEnd,
    ScheduledDurationMinutes,
    ActualDurationMinutes,
    StatusCode,
    ActualStart,
    CreatedOn,
    PriorityCode,
    RegardingObjectId,
    [Subject],
    IsWorkflowCreated,
    ScheduledStart,
    ModifiedBy,
    OwningUser,
    RegardingObjectTypeCode,
    RegardingObjectIdName,
    TimeZoneRuleVersionNumber,
    RegardingAccountId,
    RegardingAccountTelephone)
    VALUES
    ('C5B71CA7-1230-4D2A-8DEA-26184EA5E262',
    NEWID(),
    0,
    @owninguser,
    '002 Proposal {decision} with {funder} B',
    0,
    GETDATE(),
    4212,
    0,
    GETDATE(),
    0,
    1,
    1,
    GETDATE(),
    GETDATE(),
    1,
    @proposalid,
    '002 Proposal {decision} with {funder} B',
    0,
    GETDATE(),
    @owninguser,
    @owninguser,
    10011,
    @name,
    0,
    @accountid,
    @accountcontacts)
SET @Proposalid_out = proposalid

/ ***********致电************************** /

DECLARE @Proposalid_out uniqueidentifier
EXEC sp_CreateTaskFromProposalStatusUpdate
        @proposalstatusupdateid uniqueidentifier,
        @Proposalid_out out
SELECT @Proposalid_out

/ ******************* *************

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM