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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Anonimo
25/07/2005 - 09:27 | Informe spam
Ante todo gracias por tu ayuda, pero asi tampoco me deja,
haciendolo de la forma que me planteas me da un error de
sintaxis, he seguido intentando cosas similares (con
parametros, sin ellos, con call, sin call, tipo stored,
tipo text, etc) y me da diferentes tipos de fallo, pero no
consigo que me cargue la tabla, me parece a mi que esta
clase q me he descargado (mysqldrivercs) es similar a
odbc, en la q tienes q poner toda la sintaxis de llamada a
un procedimiento, pero si lo hago asi me dice lo mismo de
antes, q no puede devolver un conjunto de datos en el
contexto actual

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


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida