2013-01-07 31 views
5

Tôi có một bảng chính và một vài bảng nhỏ hơn.Thủ tục lưu trữ để chèn dữ liệu từ bảng này sang bảng khác có cùng tên cột

  • Master bảng có C1 | C2 | C3 | C4 | C5 |
  • Một bảng nhỏ có C1 | C2 | C3 |

Cũng @C1 (một biến mà có một giá trị mà phù hợp với giá trị của C1 trong Master bảng.

Các tên cột phù hợp cho cả hai bảng. Tôi muốn tạo một thủ tục lưu sẵn chèn các giá trị từ Master bảng (C1, C2C3) vào bảng nhỏ hơn (C1, C2, C3).

Nỗ lực của tôi:

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 

Xin giúp

Cảm ơn bạn

+1

Bạn đã không giải thích tại sao bạn chocked. Và, tôi đang xóa thẻ [tag: jQuery] – Alexander

+1

Bạn có cung cấp điểm thưởng cho giải pháp bằng jQuery không? –

+0

Cảm ơn các bạn đã giúp đỡ nhanh. Xin lỗi vì thẻ jquery ... hehe Tôi sẽ thực hiện các thay đổi cần thiết và đánh dấu câu trả lời đầu tiên là CHẤP NHẬN ngay khi có thể. Cảm ơn bạn – 007

Trả lời

7

Bạn cần phải sử dụng cú pháp INSERT INTO ... SELECT ..... - không VALUES từ khóa liên quan đến:

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

Bạn đang ở rất gần! Miễn là C1, C2 và C3 là các kiểu dữ liệu giống nhau, điều này sẽ hoạt động.

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; 
Các vấn đề liên quan