2010-08-03 10 views
0

Je dois traiter un fichier contenant un grand nombre d'instructions sql. Le problème est que l'instruction sql contient des paramètres.ExecuteNonQuery avec les paramètres

E.g. le fichier ressemble à ceci

declare @var1 as nvarchar; 
set @var1 = 'value'; 
insert into table (field1, field2, field3) 
    values ('value1', 'value2', @var1); 

se répète avec l'ensemble suivant de trois lignes. J'espérais pouvoir simplement analyser le fichier en trois blocs de lignes et les ignorer en utilisant ExecuteNonQuery, mais le problème est que l'instruction sql contient un paramètre.

Remarque: Dans mon exemple @ var1 est une valeur dans le script, il prend une variable de serveur.

Répondre

0

Ressemble à un fichier de script SQL. Vous ne pouvez pas simplement utiliser ISQL ou SQLCmd?

[Addendum]

Désolé, je pris une MSSQL fin arrière depuis que vous avez fait référence à ExecuteNonQuery.

Si ces instructions sont cohérentes, vous pouvez ajouter la valeur.

* read and ignore first line. 
* read 2nd line and strip out value between quotes. 
* read 3rd line, replace the @x string with the value from line 2. 
* execute modified 3rd line. 
* repeat 

si elles diffèrent dans le type de données, vous devez utiliser le type déclaré à lire et à insérer la valeur (à savoir ne pas utiliser les guillemets pour numérique). À la racine, c'est vraiment un problème de conception et/ou d'organisation.

+0

Le script est exécuté sur une base de données MySQL. MySQL a un utilitaire de ligne de commande pour importer le fichier script. Mais la raison de le faire dans un programme est que nous n'avons pas accès au shell, et l'exécution du fichier via MySQL UI Tools le fait geler. Le fichier est plus de 8 Go. –

0

Normalement, lorsque vous exécutez un script SQL existant, vous devez diviser GO et exécuter ces gros blocs. Cependant, je n'ai pas essayé de le faire avec les instructions DECLARE, avez-vous essayé d'exécuter le script tel quel - c'est-à-dire le morceau que vous avez publié?

+0

J'ai essayé d'exécuter le script et j'ai reçu le message d'erreur suivant: "Le paramètre '@ var1' doit être défini." –

Questions connexes