【问题标题】:table variable with other parameter insert带有其他参数插入的表变量
【发布时间】:2014-12-16 17:08:58
【问题描述】:

这是我的程序

CREATEPROCEDURE mysp
    @id int
    @param1 int
    @param2 int
    @param3 datetime
    @param4 bit
AS
    DECLARE @tv TABLE
    ( 
         param1 INT
    )
    INSERT INTO @tv ( param1 )
    SELECT param1 FROM tbl1 WHERE id = @id and IsActive = 1


    INSERT INTO tbl2
    (   
     id
    ,param1 
    ,param2 
    ,param3 
    ,param4 
    )
    VALUES
    (
     // all recors from @tv
    ,@param1 
    ,@param2 
    ,@param3 
    ,@param4 
   )

@tv 将有多个记录我想将@tv 中的 param1 的每个值与其他参数 param1、param2、param3、param4 一起插入到另一个表中。像这样的

有没有办法做到这一点。我不想为此使用任何光标。

谢谢。非常感谢您的帮助。

【问题讨论】:

  • 我不太明白 - 你没有在你的 SP 中使用你的 @paramX 参数,只有 [@id]。
  • @Dave.Gugg 更新了问题

标签: sql sql-server


【解决方案1】:

在我看来,您可以将整个事情简化为:

CREATE PROCEDURE mysp
    @id INT ,
    @param1 INT ,
    @param2 INT ,
    @param3 DATETIME ,
    @param4 BIT
AS
    INSERT  INTO tbl2
            ( id ,
              param1 ,
              param2 ,
              param3 ,
              param4
            )
            SELECT  param1 ,
                    @param1 ,
                    @param2 ,
                    @param3 ,
                    @param4
            FROM    tbl1
            WHERE   id = @id
                    AND isActive = 1

    GO

【讨论】:

  • 这是个好主意。这使我无法使用表变量,谢谢。真的很感激。
【解决方案2】:

像这样改变你的第二个插入。

INSERT INTO tbl2
            (id,param1,param2,param3,param4)
SELECT param1,@param1,@param2,@param3,@param4
FROM   @tv 

或者你可以直接从tbl1做一个insert,不需要声明一个表变量(@tv)

INSERT INTO tbl2
            (id,param1,param2,param3,param4)
SELECT param1,@param1,@param2,@param3,@param4
FROM   tbl1 WHERE id = @id and IsActive = 1

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多