2013-01-07 98 views
5

我有一個主表和幾個較小的表。將數據從一個表插入另一個具有相同列名的另一個表的存儲過程

  • 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 

請幫

謝謝

+1

你沒有解釋爲什麼你哽死。而且,我正在刪除[tag:jQuery]標籤 – Alexander

+1

您是否提供使用jQuery的解決方案的積分? –

+0

感謝球員們的快速幫助。對不起,jquery標籤...赫赫我會做出必要的修改,並將第一個答案標記爲儘快接受。謝謝 – 007

回答

7

您需要使用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 
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 
0
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; 
相關問題