Procedimientos en mysql

22/07/2005 - 11:44 por Javi Garcia | Informe spam
Hola, he creado un procedimiento almacenado en mi servidor
mysql para la realizacion de una consulta bastante pesada
para ser realizada a traves de codigo, el caso es q este
procedimiento tiene al final una intruccion select que me
retorna el resultado de la tabla sin problemas en los
clientes de mysql, el problema esta en c#, que ni con la
clase odbc ni mysqldrivercs soy capaz de cargar la tabla
que me retorna en ningun sitio, lo suyo es q fuese como
cargar una consulta (el comando de un dataadapter con la
consulta), pero al intentar hacer eso con el commandtext
call procedimiento (parametros), al intentar cargar una
tabla me dice que:

{"MySQLDriverCS Exception: MySQLDriverCS Error: wrong
query.PROCEDURE Procedimiento can't return a result set in
the given context" }

El codigo utilizado es:

MySQLDriverCS.MySQLConnectionString
constring=newMySQLDriverCS.MySQLConnectionString
("servidor", "base de datos","usuario","contraseña");

MySQLDriverCS.MySQLConnection con = new
MySQLDriverCS.MySQLConnection(constring.AsString);

MySQLDriverCS.MySQLCommand com=new
MySQLDriverCS.MySQLCommand("call procedimiento
(parametro1,parametro2);",con);

com.CommandType=System.Data.CommandType.StoredProcedure;

con.Open();

MySQLDriverCS.MySQLDataAdapter adp = new
MySQLDriverCS.MySQLDataAdapter(com);

System.Data.DataTable dt = new System.Data.DataTable
("DefaultTableName");

adp.Fill(dt);

tb lo he intentado con la clase odbc y com data reader,
pero con resultador similares
 

Leer las respuestas

#1 Octavio Hernandez
22/07/2005 - 23:37 | Informe spam
Javier,

No he usado el proveedor de MySQL, pero pienso que el problema podría estar
en el uso del CALL:

MySQLDriverCS.MySQLCommand com new MySQLDriverCS.MySQLCommand("call
procedimiento(parametro1,parametro2);",con);

¿No habría que hacerlo al estilo "tradicional" de ADO.NET, algo así como:

MySQLDriverCS.MySQLCommand com=new
MySQLDriverCS.MySQLCommand("procedimiento",con);
com.CommandType=System.Data.CommandType.StoredProcedure;
com.Parameters.Add( /* nombre, tipo, valor del parametro 1 */ );
com.Parameters.Add( /* nombre, tipo, valor del parametro 2 */ );

Slds - Octavio

"Javi Garcia" escribió en el mensaje
news:06d801c58ea1$e5d09c60$
Hola, he creado un procedimiento almacenado en mi servidor
mysql para la realizacion de una consulta bastante pesada
para ser realizada a traves de codigo, el caso es q este
procedimiento tiene al final una intruccion select que me
retorna el resultado de la tabla sin problemas en los
clientes de mysql, el problema esta en c#, que ni con la
clase odbc ni mysqldrivercs soy capaz de cargar la tabla
que me retorna en ningun sitio, lo suyo es q fuese como
cargar una consulta (el comando de un dataadapter con la
consulta), pero al intentar hacer eso con el commandtext
call procedimiento (parametros), al intentar cargar una
tabla me dice que:

{"MySQLDriverCS Exception: MySQLDriverCS Error: wrong
query.PROCEDURE Procedimiento can't return a result set in
the given context" }

El codigo utilizado es:

MySQLDriverCS.MySQLConnectionString
constring=newMySQLDriverCS.MySQLConnectionString
("servidor", "base de datos","usuario","contraseña");

MySQLDriverCS.MySQLConnection con = new
MySQLDriverCS.MySQLConnection(constring.AsString);

MySQLDriverCS.MySQLCommand com=new
MySQLDriverCS.MySQLCommand("call procedimiento
(parametro1,parametro2);",con);

com.CommandType=System.Data.CommandType.StoredProcedure;

con.Open();

MySQLDriverCS.MySQLDataAdapter adp = new
MySQLDriverCS.MySQLDataAdapter(com);

System.Data.DataTable dt = new System.Data.DataTable
("DefaultTableName");

adp.Fill(dt);

tb lo he intentado con la clase odbc y com data reader,
pero con resultador similares

Preguntas similares