bonjour,
j aimerai savoir comment excuter un script T-sql de création de procedure stocké, à partir de mon application sur un server sql server 2005
Merci![]()
bonjour,
j aimerai savoir comment excuter un script T-sql de création de procedure stocké, à partir de mon application sur un server sql server 2005
Merci![]()
Je pense que tu dois pouvoir envoyer ta requête de création de ps comme n'importe quelle autre requête.
Sinon, pour que l'on t'aide, tu devrais donner plus de précisions : en quel langage est écrit ton application? Quelle plateforme utilises-tu (si tu en utilises une) ? .Net, J2EE, etc... ? Quelles bibliothèques utilises-tu pour la connection à ton serveur de données ? ADO, ADO.Net, etc... ?
mon application utilise une procédure stocké sous sql server 2005,
je developpe avec c# sous .Net, et j utilise ADO.net pour la connexion et l execution des requettes,
j aimrai bien savoir est ce que c est possible de vérifier l existance de cette procédure au début et si elle existe pas , la créer;
j ai trouvé ce code qui créer la procédure si elle existe pas
l execution retourne des erreurs mais la procédure se crée normalement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'MA_PROC' AND ROUTINE_SCHEMA = 'dbo') begin SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS OFF GO CREATE PROCEDURE dbo.MA_PROC @VAR1 NVARCHAR(100) AS SELECT * from examen where id =@VAR1 GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO end
mais quand j execute ta requête de création de ps comme n'importe quelle autre requête, ça marche pas,
est ce que c possible d'executer le script à partir de mon application?
Merci
Alors déjà pour éviter les erreurs à la création de la ps, écris plutôt :
Et pour créer ta ps dans ton code C#, tu peux t'inspirer des exemples fournis dans la MSDN.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'MA_PROC' AND ROUTINE_SCHEMA = 'dbo') DROP PROCEDURE [dbo].MA_PROC GO CREATE PROCEDURE dbo.MA_PROC @VAR1 NVARCHAR(100) AS SELECT * FROM examen WHERE id =@VAR1 GO
Le code d'exemple est en VB.Net mais est très facilement transposable en C# (les noms de classes, de méthodes, d'attributs ne changeant pas).
En gros, il faut instancier un objet de type SqlCommand , passer le texte de création de ta ps dans la property CommandText de ton objet, puis appeler la méthode ExecuteNonQuery(), sans oublier d'ouvrir et de fermer une connexion vers ton serveur de BDD bien sûr.
en faite le probleme c est que je me tout le scipt en un seul coup
il fallait le divivé en partis
et ça marche bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 string req1 = "SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = Ma_PROC AND ROUTINE_SCHEMA = 'dbo'"; SqlDataReader reader; try { reader = Program.data_conn.ExecuteQuery(req1); if (!reader.Read()) { string req2 = "CREATE PROCEDURE dbo.MA_PROC \n" + "@VAR1 NVARCHAR(100) \n" + "AS \n" + "SELECT * FROM examen WHERE study_uid =@VAR1 \n"; data_conn.ExecuteNonQuery(req2); } reader.Close(); } catch (SqlException sqlEx) { //LogFile.Log(sqlEx.Message); reader = null; }![]()
Partager