Vous trouverez ci-dessous un exemple d'utilisation de variables dans SQL Server 2000.
DECLARE @EmpIDVar INT
SET @EmpIDVar = 1234
SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVar
Je veux faire exactement la même chose dans Oracle en utilisant SQL Developer sans complexité supplémentaire. Cela semble être une chose très simple à faire, mais je ne trouve pas de solution simple. Comment puis-je le faire?
Réponses:
J'utilise SQL-Developer dans la version 3.2. Les autres trucs n'ont pas fonctionné pour moi, mais cela a fonctionné:
C'est aussi la manière la plus astucieuse présentée ici, à ce jour.
(Si vous omettez la partie "définir", vous serez invité à saisir cette valeur)
la source
Il existe deux types de variables dans SQL-plus: la substitution et la liaison.
Il s'agit d'une substitution (les variables de substitution peuvent remplacer les options de commande SQL * Plus ou tout autre texte codé en dur):
Il s'agit de bind (les variables de liaison stockent les valeurs de données pour les instructions SQL et PL / SQL exécutées dans le SGBDR; elles peuvent contenir des valeurs uniques ou des ensembles de résultats complets):
SQL Developer prend en charge les variables de substitution, mais lorsque vous exécutez une requête avec bind
:var
syntaxe de vous êtes invité pour la liaison (dans une boîte de dialogue).Référence:
Les variables de substitution UPDATE sont un peu difficiles à utiliser, regardez:
la source
var x
etexec :x
, pas d'invite.Dans SQL * Plus, vous pouvez faire quelque chose de très similaire
Dans SQL Developer, si vous exécutez une instruction contenant un nombre quelconque de variables de liaison (précédées d'un signe deux-points), vous serez invité à entrer des valeurs. Comme Alex le fait remarquer, vous pouvez également faire quelque chose de similaire en utilisant la fonction "Exécuter le script" (F5) avec la syntaxe EXEC alternative suggérée par Alex.
la source
select...into
(ORA-01006), vous devriez donc le faire à laexec :v_emp_id := 1234;
place.Ok, je sais que c'est un peu un hack mais c'est un moyen d'utiliser une variable dans une simple requête, pas un script:
Vous pouvez l'exécuter partout.
la source
Réponse simple NON.
Cependant, vous pouvez obtenir quelque chose de similaire en exécutant la version suivante à l'aide de variables de liaison:
Une fois que vous avez exécuté la requête ci-dessus dans SQL Developer, vous serez invité à entrer une valeur pour la variable de liaison EmployeeID.
la source
Vous pouvez lire ailleurs sur les variables de substitution; ils sont assez pratiques dans SQL Developer. Mais j'ai des difficultés à essayer d'utiliser des variables de liaison dans SQL Developer. C'est ce que je fais:
SET SERVEROUTPUT ON
fait en sorte que le texte puisse être imprimé sur la console de sortie du script.Je crois que ce que nous faisons ici s'appelle officiellement PL / SQL. Nous avons quitté le domaine du SQL pur et utilisons un moteur différent dans Oracle. Vous voyez ce qui
SELECT
précède? En PL / SQL, vous devez toujoursSELECT ... INTO
soit une variable, soit un refcursor. Vous ne pouvez pas simplementSELECT
et retourner un jeu de résultats en PL / SQL.la source
Je pense que le moyen le plus simple dans votre cas est:
Pour les valeurs de chaîne, ce sera comme:
la source
Utilisez la requête suivante:
la source
Essayez ceci, cela fonctionnera, il vaut mieux créer une procédure, si la procédure n'est pas possible, vous pouvez utiliser ce script.
la source
Dans le développeur SQL, définissez les propriétés par défaut "ON". S'il est "OFF" dans tous les cas, utilisez les étapes ci-dessous.
set define on; define batchNo='123'; update TABLE_NAME SET IND1 = 'Y', IND2 = 'Y' WHERE BATCH_NO = '&batchNo';
la source