2009-06-19 4 views
0

J'effectue certaines actions sur une table récupérée à partir d'une base de données db2 ligne par ligne dans un projet C#. mais lorsque je tente de le mettre à jour à l'aide des curseurs ligne par ligne à la base de données utilisant l'instruction suivante une exception est générée:mettre à jour une table dans db2 ligne par ligne à partir de .net

selectCommand.CommandText = "DECLARE crsr1 CURSOR FOR select * from " + tableName+" ;" 

De ma compréhension de cela, en utilisant des instructions curseurs de db2 ne sont pas pris en charge dans les langues .net . Je suis connecté à la base de données à l'aide des pilotes IBM DB2 ODBC.

Est-il possible d'utiliser des curseurs, ou si quelqu'un peut dire s'il y a quelque chose qui me manque ici.

J'ai fait beaucoup de recherche sur le net, mais pas beaucoup est disponible sur ce problème.

c'est l'exception que je suis arrivé pour la déclaration ci-dessus -

"ERROR [42601] [IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token \"DECLARE CRSR1 CURSOR FOR select * from MYTA\" was found following \"BEGIN-OF-STATEMENT\". 
Expected tokens may include: \"<space>\". SQLSTATE=42601\r\n" 

toute aide ou suggestions sont très appréciés.

Répondre

0

Je pense que vous voudrez probablement mettre cela dans un proc - vous faites pas normalement un « déclarer le curseur .. » en dehors d'une procédure stockée {sauf si vous le débogage dans la CLI ou quelque chose}

0

Vous devez simplement placer la partie "SELECT" dans le texte de commande et utiliser la méthode ExecuteResultSet de DB2Command pour renvoyer un jeu de résultats qui enveloppe un curseur modifiable pouvant être mis à jour.

selectCommand.CommandText = "select * from " + tableName+" ;" 
using(var result = selectCommand.ExecuteResultSet(DB2ResultSetOptions.Updatable)) 
{ 
    while (result.Read()) 
    { 
     //set value of 2nd column to 'Hello' 
     result.SetString(1, "Hello"); 
    } 
}