8

我有一张主桌和几张小桌。

  • Master表有C1 | C2 | C3 | C4 | C5 |
  • 一张小桌子有C1 | C2 | C3 |

此外@C1(一个具有与表中 C1 的值匹配的值的变量Master

两个表的列名匹配。我想创建一个存储过程,将值从Master表(C1、、C2C3)插入到较小的表(C1, C2, C3)中。

我的努力:

Create proc Schema.Proc
(@C1 int)
AS
BEGIN
INSERT INTO SmallTable
(C1, C2, C3) --- Columns of smaller table
Values (SELECT C1, C2, C3 ---Columns of Master table
FROM MasterTable)
WHERE C1 = @C1 --- Where value of C1 of Master table matches the value of @C1
END

请帮忙

谢谢

4

3 回答 3

11

您需要使用INSERT INTO ... SELECT .....语法 - 不VALUES涉及关键字:

CREATE PROCEDURE Schema.Proc
   (@C1 int)
AS
BEGIN
    INSERT INTO SmallTable(C1, C2, C3) --- Columns of smaller table
        SELECT C1, C2, C3 ---Columns of Master table
        FROM MasterTable
        WHERE C1 = @C1 --- Where value of C1 of Master table matches the value of @C1
END
于 2013-01-07T22:05:56.680 回答
3

你很亲近!只要 C1、C2 和 C3 是相同的数据类型,这应该可以工作。

Create proc Schema.Proc
(@C1 int)
AS
BEGIN
INSERT INTO SmallTable
(C1, C2, C3) --- Columns of smaller table
SELECT C1, C2, C3 ---Columns of Master table
FROM MasterTable
WHERE C1 = @C1
END
于 2013-01-07T22:05:54.453 回答
1
CREATE OR REPLACE PROCEDURE P_INSERT(U_ID NUMBER)
AS
BEGIN
INSERT INTO X(ID,NAME,SALARY)--X IS TABLE NAME 
SELECT ABC_ID,NAME,SALARY FROM ABC
WHERE ABC_ID=U_ID;--ABC_ID IS SAME VALUE OF U_ID
END;
于 2017-04-20T19:27:44.930 回答