2010-02-15 17 views
0

Je voudrais demander si quelqu'un sait comment utiliser le mot-clé OPTION.Oracle Option Mot-clé

J'ai rencontré cela sur un ancien code source C que j'ai lu.

OPTION SELECT ROWID 
FROM TABLE_1 
WHERE PRODUCT_CODE = ANY(SELECT PRODUCT_CODE FROM PRODUCT_TABLE WHERE PRODUCT_GROUP='value a') 
FOR UPDATE NOWAIT; 
SELECT ROWID 
FROM TABLE_2 
WHERE PRODUCT_CODE = 'value b' 
FOR UPDATE NOWAIT; 
UPDATE TABLE_3 
SET ... 
WHERE PRODUCT_CD = 'value b' 

* Mise à jour Requête basée sur le premier commentaire. Fondamentalement, le code C a fait une déclaration SQL avec une instruction de 3 sql. Puis obtenu un résultat de celui-ci. Je me demandais ce que l'oracle reviendrait si vous donniez deux déclarations. Quel résultat de l'instruction select retournera-t-il? ou serait-il juste retourner le second parce que le premier a été spécifié avec mot-clé OPTION?

Répondre

2

Pouvez-vous poster plus de code? OPTION est un mot réservé de sorte qu'il ne peut pas être redéfini.

Il est généralement utilisé pour des opérations telles que:

GRANT CREATE INDEX TO user WITH ADMIN OPTION; 
+0

Vous voulez donc dire que le mot OPTION n'est pertinent pour aucune requête? C'est juste un outil de changement de privilège d'administrateur? J'ai modifié la question et élargi la requête. – Nap

+0

Vous avez un point-virgule après le premier 'select ...', donc je pense que le mot-clé 'OPTION' ne fonctionnerait que sur ce bloc. 11g me donne juste une «déclaration SQL invalide». Je peux seulement supposer que 'OPTION' doit être un mot-clé Pro * C. Pouvez-vous essayer de suivre votre session et voir quel SQL est réellement envoyé? –

2

Comme un mot-clé Oracle qui ne semble pas avoir de sens ici. S'il s'agit d'un fichier Pro * C, y a-t-il une macro définie quelque part qui définit OPTION à quelque chose comme exec sql, ou comme cela peut ressembler à un curseur, exec sql declare something cursor for? Bien que ce dernier rende le nom du curseur fixé à something, vous ne pouvez l'utiliser qu'une seule fois par fichier; peut-être est-ce un raccourci pour déclarer un curseur appelé option ...

Voir plus de code autour de ceci serait utile cependant.

+0

Je suis assez sûr que vous ne pouvez pas créer un curseur appelé OPTION - en raison de son mot réservé. –

+0

True. Je ne pense pas qu'il y ait quelque chose qui vous empêche d'avoir une macro avec ce nom. Cela ne semble pas être une bonne idée, si c'est le cas. –