Verán tengo el siguiente SP en PostgreSQL 8.2
Código:
CREATE OR REPLACE FUNCTION pdameusuario(pnum_identidad bpchar, pclave bpchar) RETURNS SETOF refcursor AS $BODY$ DECLARE curCursor refcursor; BEGIN --ACCEDIO POR CERTIFICADO IF pclave='' THEN OPEN curCursor FOR SELECT cod_usuario, num_identidad, clave, nombre, apellido_1, apellido_2, calle, email, TUSUARIOS.cod_pais, TPAISES.PAIS, TUSUARIOS.cod_provincia, TPROVINCIAS.provincia, ciudad, codigo_postal, fec_alta, foto, notificar_email, estrellas, cuenta_activa FROM tusuarios INNER JOIN TPAISES ON TPAISES.COD_PAIS = TUSUARIOS.COD_PAIS INNER JOIN TPROVINCIAS ON TPROVINCIAS.COD_PROVINCIA = TUSUARIOS.COD_PROVINCIA WHERE NUM_IDENTIDAD = pnum_identidad; RETURN NEXT curCursor; END IF; --ACCEDIO NORMAL IF pnum_identidad<>'' and pclave<>'' THEN OPEN curCursor FOR SELECT cod_usuario, num_identidad, clave, nombre, apellido_1, apellido_2, calle, email, TUSUARIOS.cod_pais, TPAISES.PAIS, TUSUARIOS.cod_provincia, TPROVINCIAS.provincia, ciudad, codigo_postal, fec_alta, foto, notificar_email, estrellas, cuenta_activa FROM tusuarios INNER JOIN TPAISES ON TPAISES.COD_PAIS = TUSUARIOS.COD_PAIS INNER JOIN TPROVINCIAS ON TPROVINCIAS.COD_PROVINCIA = TUSUARIOS.COD_PROVINCIA WHERE NUM_IDENTIDAD = pnum_identidad AND CLAVE =pclave; RETURN NEXT curCursor; END IF; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE;
Estoy intentando llamarlo desde .NET usando al dedillo el puto manual de NPGSQL que viene:
Código:
private void button1_Click(object sender, EventArgs e) { Npgsql.NpgsqlConnection objCn = null; NpgsqlTransaction t = null; try { string txtCN = "mi cadena de conexion...."; DataTable tbDatos = new DataTable(); objCn = new Npgsql.NpgsqlConnection(txtCN); objCn.Open(); t = objCn.BeginTransaction(); Npgsql.NpgsqlCommand objCmd = new Npgsql.NpgsqlCommand("pdameusuario", objCn); objCmd.CommandType = CommandType.StoredProcedure; objCmd.Parameters.Add("pnum_identidad", "77777"); objCmd.Parameters.Add("pclave", "miclave"); Npgsql.NpgsqlDataAdapter objDa = new Npgsql.NpgsqlDataAdapter(objCmd); objDa.Fill(tbDatos); t.Commit(); MessageBox.Show(tbDatos.Rows[0][0].ToString()); } catch (Exception ex) { t.Rollback(); MessageBox.Show(ex.Message); } finally { if (objCn.State == ConnectionState.Open) objCn.Close(); } }
Por favor, ¿ALGUIEN ME PUEDE AYUDAR?, estoy dando vueltas a la mierda esta y la verdad que ya estoy de mal humor...
Ejecutar se ejecuta todo bien, pero el resultado que recibo del MSGBOX es: <unnamed portal 1>
¿ALGUIEN SABE QUE PUEDE SER, POR FAVOR?