2009-08-04 8 views
0

Tenez compte des tables ..sélectionnez une requête dans la requête de mise à jour?

TABLE_1 
OPTION VARCHAR2 (2), 
NAME VARCHAR2 (50), 
SQLSOURCE VARCAHR2(400) 

TABLE_2 
USER_NAME VARCHAR2 (50), 
USER_ID NUMBER (10) 
DEPT_ID NUMBER (10) 

Ceci est la stmt mise à jour ..

UPDATE table1 SET OPTION='K', 
SQLSOURCE='SELECT DEPT_ID FROM TABLE_2 USER_ID= 15 ORDER BY USER_NAME' 
WHERE NAME='GURU' 

Son fonctionne bien, mais je ne veux pas que la valeur codée en dur 15 dans la requête ..

La requête suivante remplacera cette 15 ..

SELECT GROUP_ID FROM TABLE_3 WHERE UPPER(GROUP_NAME)='GROUP1' 

so .. j'ai essayé comme ça ..

UPDATE table1 SET OPTION='K', 
SQLSOURCE='SELECT DEPT_ID FROM TABLE_2 USER_ID='||(SELECT GROUP_ID FROM TABLE_3 WHERE UPPER(GROUP_NAME)='GROUP1') ORDER BY USER_NAME 
WHERE NAME='GURU' 

il est montrant une erreur ..

quelqu'un peut me dire la façon de le faire ???

Répondre

1

Je pense que vous voulez:

UPDATE table1 
SET OPTION='K' 
, SQLSOURCE='SELECT DEPT_ID FROM TABLE_2 USER_ID=' 
      ||(SELECT GROUP_ID FROM TABLE_3 WHERE UPPER(GROUP_NAME)='GROUP1') 
      ||' ORDER BY USER_NAME' 
WHERE NAME='GURU' 
3

Ceci est probablement ce que vous voulez:

UPDATE table_1 
    SET "OPTION" = 'K', 
     SQLSOURCE = 'SELECT DEPT_ID FROM TABLE_2 USER_ID=' || 
        (SELECT GROUP_ID 
         FROM TABLE_3 
        WHERE UPPER(GROUP_NAME) = 'GROUP1') || 
        ' ORDER BY USER_NAME' 
WHERE NAME = 'GURU' 
Questions connexes