2013-01-07 3 views
5

Mam jedną tabelę główną i kilka mniejszych tabel.Zapisana procedura wstawiania danych z jednej tabeli do drugiej o tych samych nazwach kolumn

  • Master stół ma C1 | C2 | C3 | C4 | C5 |
  • stolik ma C1 | C2 | C3 |

także @C1 (zmienna, która ma wartość, która odpowiada wartości C1 w Master tabeli.

nazwy kolumn pasuje do obu tabel. Chcę utworzyć procedurę przechowywaną wstawiającą wartości z tabeli Master (C1, C2 i C3) do mniejszej tabeli (C1, C2, C3).

Mój wysiłek:

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 

Proszę o pomoc

Dziękuję

+1

Nie wyjaśnić dlaczego chocked. I usuwam tag [tag: jQuery] – Alexander

+1

Czy oferujesz dodatkowe punkty za rozwiązanie za pomocą jQuery? –

+0

Dzięki chłopaki za szybką pomoc. Przepraszamy za znacznik jquery ... hehe wprowadzę niezbędne zmiany i oznaczy pierwszą odpowiedź jako AKCEPTOWANA tak szybko, jak tylko będę mogła. Dziękuję – 007

Odpowiedz

7

Trzeba użyć składni INSERT INTO ... SELECT ..... - nie VALUES słowa kluczowego związanego:

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

Byłaś blisko! Dopóki C1, C2 i C3 są tymi samymi typami danych, powinno to działać.

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;