2010-05-27 40 views
11

nếu tôi muốn chọn bất kỳ id nào từ một bảng và muốn chèn giá trị của nó vào một bảng khác làm khóa ngoài thì tôi sẽ làm như thế nào thông qua thủ tục lưu sẵn?Làm thế nào để sử dụng các biến cục bộ trong các thủ tục lưu sẵn?

+0

thẻ nó với sql –

+0

How are you truy cập vào cơ sở dữ liệu: ADO.NET, Entity Framework, LINQ to SQL ...? Bạn đang tìm kiếm trợ giúp trong mã ASP.NET của bạn, hoặc trong mã SQL? – Richard

+0

Tôi đã loại bỏ thẻ ASP.NET vì câu hỏi này không phải là tất cả về ASP.NET, nhưng đối phó với các thủ tục được lưu trữ trong SQL. Sẽ hữu ích khi biết bạn đang sử dụng công cụ cơ sở dữ liệu nào. –

Trả lời

18

Ví dụ về cách tôi tiếp cận vấn đề này.

DECLARE @MyID INT; 

SET @MyID = 0; 

SELECT @MyID = [TableID] 
    FROM [MyTable] 
WHERE [TableID] = 99; 

IF @MyID > 0 
BEGIN 

    INSERT INTO [MySecondTable] 
     VALUES (@MyID, othervalues); 

END 
0

biến phong cách PostgreSQL:

DECLARE my_variable1 int; 
DECLARE my_variable2 int; 
BEGIN 
    my_variable1 := 25; 
    SELECT INTO my_variable2 id FROM my_table1; 
    INSERT INTO my_table2 (my_field1, my_field2, id) VALUES ('XXX', 'YYY', my_variable2); 
END; 
+0

SELECT INTO my_variable2 id FROM my_table1; Không hiệu quả đối với tôi ... nó có bị sửa đổi không? L ERI: lỗi cú pháp tại hoặc gần "INTO" – Tomino

0

Oracle phong cách biến:

DECLARE v_MyVariable1 NUMBER; 
DECLARE v_MyVariable2 VARCHAR2(100); 

BEGIN 
    v_MyVariable1 := 0; 
    SELECT INTO v_MyVariable2 CUSTOMER_NAME 
     FROM CUSTOMERS; 

    SELECT INTO v_MyVariable1 CUSTOMER_HISTORY_SEQ.NEXTVAL FROM DUAL; 

    INSERT INTO CUSTOMERS_HISTORY (CUSTOMER_ID, CUSTOMER_NAME) VALUES (v_MyVariable1, v_MyVariable2); 

    EXCEPTION 
     WHEN OTHERS THEN 
      NULL; 
END; 
Các vấn đề liên quan