Discussion:
DEVOLVER DATOS CON PROCEDIMIENTOS ALMACENADOS
(demasiado antiguo para responder)
javito
2009-12-02 12:38:16 UTC
Permalink
Estoy revisando los procedimientos almacenados y veo con facilidad como un
preocedimiento devuelve una variable definida como parámetro de salida
(output) simplemente igualándolo a la expresión de ejecución y luego
devolviéndolo con el Return, pero como se puede hacer para devolver varios
valores, entiendo que en un procedimiento almacenado no existen objetos como
el SQLDataReader y entonces ¿ como devolver varias cosas ?

un saludo
Alberto Poblacion
2009-12-02 21:33:16 UTC
Permalink
Post by javito
Estoy revisando los procedimientos almacenados y veo con facilidad como un
preocedimiento devuelve una variable definida como parámetro de salida
(output) simplemente igualándolo a la expresión de ejecución y luego
devolviéndolo con el Return, pero como se puede hacer para devolver varios
valores, entiendo que en un procedimiento almacenado no existen objetos como
el SQLDataReader y entonces ¿ como devolver varias cosas ?
Create Procedure Prueba (
@Dato1 INT OUTPUT,
@Dato2 Varchar(10) OUTPUT,
etc. )
AS
Select @Dato1=Campo1, @Dato2=Campo2 FROM MiTabla
-- O bien: SET @Dato1=1234 etc.
GO

Para llamarlo desde código cliente:

SqlCommand cmd = new SqlCommand("Prueba", conexion);
cmd.CommandType = CommandTye.StoredProcedure;

Sql Parameter param1 = new SqlParameter("@Dato1", SqlDbType.Int);
param1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param1);

Sql Parameter param2= new SqlParameter("@Dato2", SqlDbType.Varchar, 10);
param2.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param2);

conexion.Open();
cmd.ExecuteNonQuery();

int dato1 = (int)param1.Value;
string dato2 = (string)param2.Value;

conexion.Close();

Loading...