2010-05-27 55 views
11

如果我想从表中选择任何id并想将其值作为外键插入另一个表中,那么我将如何通过存储过程来完成此操作?如何在存储过程中使用局部变量?

+0

与SQL – 2010-05-27 12:33:25

+0

你是如何访问数据库的标签是:ADO.NET,实体框架,LINQ到SQL ...?你在寻找ASP.NET代码或SQL代码的帮助吗? – Richard 2010-05-27 12:33:51

+0

我删除了ASP.NET标记,因为这个问题并不是关于ASP.NET,而是处理SQL中的存储过程。知道你使用的是什么数据库引擎会很有用。 – 2010-05-27 12:39:31

回答

18

我将如何处理这个问题的一个例子。

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

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; 不适用于我...是否正常? 错误:语法错误处于或接近“INTO” – Tomino 2015-05-07 18:57:30

0

甲骨文风格变量:

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;