如何检索和存储这些指南以供以后使用?

Posted

技术标签:

【中文标题】如何检索和存储这些指南以供以后使用?【英文标题】:How do I retrieve and stores these guids for later use? 【发布时间】:2016-02-03 15:33:47 【问题描述】:

我有一张由

生成的表Partners
CREATE TABLE Partners ( 
    id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
    name NVARCHAR(50) NOT NULL,
    email NVARCHAR(254) NOT NULL, -- 254 is optimal length according to http://***.com/questions/1199190/what-is-the-optimal-length-for-an-email-address-in-a-database
    PRIMARY KEY (id)
);

并尝试在存储过程中插入一行并检索插入行的id

CREATE PROCEDURE AddPartner 
     @name NVARCHAR(50), @email NVARCHAR(254)
AS
BEGIN
    SET NOCOUNT ON 
    INSERT INTO Partners (name,email)
    OUTPUT INSERTED.id INTO @new_guid
    VALUES (@name,@email)   
    SELECT @new_guid
END  

假设我想 (1) 调用 AddPartner(name,email) 等于 ('some dude','dude192@gmail.com) 并返回 id (调用它 dude_id) 以便我以后可以 (2) 在插入另一个时使用它行:

INSERT INTO Answers (question_id,partner_id,val) VALUES (1,dude_id,24);

我该怎么做呢?在 (1) 和 (2) 之间使用 GO 语句会毁掉一切吗?

【问题讨论】:

如果您在导入时没有 ID,请签出。 ***.com/questions/42648/… 【参考方案1】:

Output Parameter 添加到您的程序中

CREATE PROCEDURE Addpartner (@name     NVARCHAR(50),
                             @email    NVARCHAR(254),
                             @new_guid UNIQUEIDENTIFIER output)
AS
  BEGIN
      SET NOCOUNT ON
      INSERT INTO Partners
                  (name,email)
      OUTPUT INSERTED.id INTO @new_guid
      VALUES      (@name,@email)
  END 


DECLARE @new_guid AS UNIQUEIDENTIFIER 

EXEC Addpartner 'some dude', 'dude192@gmail.com', @new_guid  output

INSERT INTO Answers
            (question_id,partner_id,val)
VALUES      (@output_identity,'dude_id',24); 

【讨论】:

idUNIQUEIDENTIFIER,而不是 INT @user5648283 - 立即查看 我在OUTPUT INSERTED.id INTO @new_guid 行收到错误Must declare the table variable "@new_guid".

以上是关于如何检索和存储这些指南以供以后使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何存储缩放参数以供以后使用

Apache Camel:如何存储变量以供以后使用

如何从 Android Studio 中检索已保存的密钥库密码?

如何 $.post 一个 js 变量并将其存储到 php 以供以后使用,类似于 LocalStorage?

如何保存对象以供以后使用?通过 JSON 或其他方式发送并存储在数据库中然后恢复

如何腌制或存储 Jupyter (IPython) 笔记本会话以供以后使用