Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Passage de paramètres lors de l'exécution d'un script SQL.

2 réponses
Avatar
Michel
Bonjour,

Je cherche un moyen pour passer un paramètre à un script SQL lors de son
exécution par l'utilitaire osql.
La valeur paramètre fourni est utilisée tout au long de l'exécution du
script SQL.


Exemple :

Je définis une variable d'environnement contenant la valeur à passer :

set MAVAR=TOTO

osql -U <User> -P <Password> -d <Base> -n -b -h-1 -i %Pathsql%\test.sql -o
%PathOut%\log\test.log


J'ai une possibilité par la commande EXIT décrite dans l'aide en ligne de
SQL Server, mais je n'arrive pas à mes fins.

Ci-dessous, un résumé de l'aide :
L'utilitaire osql transmet au serveur toutes les informations placées entre
parenthèses ( ) telles qu'elles ont été entrées. Si une procédure système
sélectionne un ensemble et renvoie une valeur, seule la sélection est
renvoyée. L'instruction EXIT( ) sans information entre parenthèses exécute
toutes les commandes qui la précèdent dans le lot d'instructions, puis
quitte l'utilitaire sans renvoyer de valeur.

Il existe quatre formats de sortie :

a.. EXIT
N'exécute pas le lot ; ferme immédiatement l'utilitaire et ne renvoie
aucune valeur.

b.. EXIT( )
Exécute le lot, puis quitte sans renvoyer de valeur.

c.. EXIT(query)
Exécute le lot, y compris la requête, puis quitte en renvoyant les
résultats de la requête.


Ci-dessous, l'essai que j'ai essayé :

set MAVAR=TOTO

osql /Q "EXIT (Declare @P_Var varchar (255) Set @P_Var=%MAVAR%)" -U
<User> -P <Password> -d <Base> -n -b -h-1 -i %Pathsql%\test.sql -o
%PathOut%\log\test.log

J'ai le message suivant :

Msg 207, Niveau 16,

2 réponses

Avatar
Oliv'
Bonjour,
Si tu utilise un fichier IN dans lequel se trouve ta requete c'est à ce
fichier que tu dois fournir la variable.

soit dans un batch en générant ton fichier requete
set MAVAR=TOTO
echo select * from sysusers where name =>.test.sql
echo %MAVAR% >.test.sql

puis tu executes
osql /S SERVEUR /E /i c:temptest.sql /o E:ResultOut.txt -n -w5000 .

Sinon utilises une procédure stockée.

osql /S SERVEUR /E /Q"sp_SQLSMTPMail '%MAVAR%'" /o
E:TempQueryOut10744570.txt -n -w5000
Oliv'


"Michel" a écrit dans le message de news:

Bonjour,

Je cherche un moyen pour passer un paramètre à un script SQL lors de son
exécution par l'utilitaire osql.
La valeur paramètre fourni est utilisée tout au long de l'exécution du
script SQL.


Exemple :

Je définis une variable d'environnement contenant la valeur à passer :

set MAVAR=TOTO

osql -U <User> -P <Password> -d <Base> -n -b -h-1 -i %Pathsql%test.sql -o
%PathOut%logtest.log


J'ai une possibilité par la commande EXIT décrite dans l'aide en ligne de
SQL Server, mais je n'arrive pas à mes fins.

Ci-dessous, un résumé de l'aide :
L'utilitaire osql transmet au serveur toutes les informations placées entre
parenthèses ( ) telles qu'elles ont été entrées. Si une procédure système
sélectionne un ensemble et renvoie une valeur, seule la sélection est
renvoyée. L'instruction EXIT( ) sans information entre parenthèses exécute
toutes les commandes qui la précèdent dans le lot d'instructions, puis
quitte l'utilitaire sans renvoyer de valeur.

Il existe quatre formats de sortie :

a.. EXIT
N'exécute pas le lot ; ferme immédiatement l'utilitaire et ne renvoie
aucune valeur.

b.. EXIT( )
Exécute le lot, puis quitte sans renvoyer de valeur.

c.. EXIT(query)
Exécute le lot, y compris la requête, puis quitte en renvoyant les
résultats de la requête.


Ci-dessous, l'essai que j'ai essayé :

set MAVAR=TOTO

osql /Q "EXIT (Declare @P_Var varchar (255) Set @P_Var=%MAVAR%)" -U
<User> -P <Password> -d <Base> -n -b -h-1 -i %Pathsql%test.sql -o
%PathOut%logtest.log

J'ai le message suivant :

Msg 207, Niveau 16,
Avatar
Med Bouchenafa
Le sujet a déjà été abordé dans ce forum mais je ne me souviens plus
exactement de l'astuce
Peut-être le truc suivant :
Créer un fichier cmd ou bat qui contient ton script
Soit test.bat ce nom de fichier
Il contient alors

@echo off

osql -U <User> -P <Password> -d <Base> -n -b -h-1 -i %ltest.sql -o
%2logtest.log


Pour l'executer
Test.bat 'xxxxx' 'yyyyyyy'



--
Bien cordialement
Med Bouchenafa


"Michel" a écrit dans le message de news:

Bonjour,

Je cherche un moyen pour passer un paramètre à un script SQL lors de son
exécution par l'utilitaire osql.
La valeur paramètre fourni est utilisée tout au long de l'exécution du
script SQL.


Exemple :

Je définis une variable d'environnement contenant la valeur à passer :

set MAVAR=TOTO

osql -U <User> -P <Password> -d <Base> -n -b -h-1 -i %Pathsql%test.sql -o
%PathOut%logtest.log


J'ai une possibilité par la commande EXIT décrite dans l'aide en ligne de
SQL Server, mais je n'arrive pas à mes fins.

Ci-dessous, un résumé de l'aide :
L'utilitaire osql transmet au serveur toutes les informations placées
entre
parenthèses ( ) telles qu'elles ont été entrées. Si une procédure système
sélectionne un ensemble et renvoie une valeur, seule la sélection est
renvoyée. L'instruction EXIT( ) sans information entre parenthèses exécute
toutes les commandes qui la précèdent dans le lot d'instructions, puis
quitte l'utilitaire sans renvoyer de valeur.

Il existe quatre formats de sortie :

a.. EXIT
N'exécute pas le lot ; ferme immédiatement l'utilitaire et ne renvoie
aucune valeur.

b.. EXIT( )
Exécute le lot, puis quitte sans renvoyer de valeur.

c.. EXIT(query)
Exécute le lot, y compris la requête, puis quitte en renvoyant les
résultats de la requête.


Ci-dessous, l'essai que j'ai essayé :

set MAVAR=TOTO

osql /Q "EXIT (Declare @P_Var varchar (255) Set @P_Var=%MAVAR%)" -U
<User> -P <Password> -d <Base> -n -b -h-1 -i %Pathsql%test.sql -o
%PathOut%logtest.log

J'ai le message suivant :

Msg 207, Niveau 16,