2010-05-27 9 views
11

Si je veux sélectionner n'importe quel ID d'une table et que je veux insérer sa valeur dans une autre table en tant que clé étrangère, comment puis-je le faire via la procédure stockée?Comment utiliser les variables locales dans les procédures stockées?

+0

avec sql –

+0

Comment accédez-vous à la base de données: ADO.NET, Entity Framework, LINQ to SQL ...? Recherchez-vous de l'aide dans votre code ASP.NET ou dans le code SQL? – Richard

+0

J'ai supprimé la balise ASP.NET car cette question ne concerne pas du tout ASP.NET, mais traite des procédures stockées dans SQL. Il serait utile de savoir quel moteur de base de données vous utilisez. –

Répondre

18

Un exemple de la façon dont j'aborderais cela.

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

variables de style 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 Identifiant my_variable2 FROM my_table1; Ne fonctionne pas pour moi ... est-ce corrent? ERREUR: erreur de syntaxe à ou près de "INTO" – Tomino

0

variables de type Oracle:

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; 
tag
Questions connexes