none
RETURN desde Stored Procedure RRS feed

  • Pregunta

  • Hola,

    ¿Cómo puedo recuperar el valor de RETURN de una SP?

    Es decir, en la SP, retorno 0 ó -1 según un criterio determinado.

    Quisiera recuperar ese RETURN -1 / RETURN 0 desde asp.net C#

    Muchas gracias,

    Ely


    Ely Jené

    sábado, 8 de julio de 2017 11:25

Respuestas

  • ¿Qué significado tiene el valor 0 o -1? ¿es un código que determina el estado de ejecución del procedimiento almacenado?

    Tienes cuanto menos tres formas de devolver datos a través de un procedimiento almacenado, sí 0 o -1 es un valor que resulta de alguna evaluación propia de un proceso -independiente del estado del procedimiento almacenado- puedes retornar el valor mediante un parámetro de salida o como una columna de la lista de selección. Has uso de la cláusula RETURN únicamente cuando se trate de un código de retorno.

    CREATE PROCEDURE dbo.NombreProcedimiento    
    AS
    BEGIN
        --El valor 0 o -1 se retorna como una columna de la lista de selección
        SELECT
    	   CASE WHEN DATEPART(DAY, GETDATE()) < 15 THEN -1 ELSE 0 END
    END

    - Aplicación

    using (SqlConnection cn = new SqlConnection("Cadena de conexión"))
    {
    	var cmd = new SqlCommand("NombreProcedimiento", cn);
    
    	cmd.CommandType = CommandType.StoredProcedure;
    
    	//Abrir conexión
    	cn.Open();
    	//Ejecutar la consulta y recuperar el valor que retorna la consulta de selección
    	int result = Convert.ToInt32(cmd.ExecuteScalar());
    
    	if (result == 0)
    	{
    		//...
    	}
    	else
    	{
    		//...
    	}
    }


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta osrol sábado, 8 de julio de 2017 15:42
    • Marcado como respuesta Whookie sábado, 8 de julio de 2017 17:10
    sábado, 8 de julio de 2017 15:00

Todas las respuestas

  • los que retornan valores   0,1 puede ser una function ya que solo te retorna un parametro este puede ser TRUE /FALSE o 1/0 en tu caso.

    Un procedimiento tambien puede retornar un valor o varios . 

    ¿Cual es el valor que retorna? 

    Pues el select que haces es el 'valor que retorna'

    sábado, 8 de julio de 2017 13:38
  • ¿Qué significado tiene el valor 0 o -1? ¿es un código que determina el estado de ejecución del procedimiento almacenado?

    Tienes cuanto menos tres formas de devolver datos a través de un procedimiento almacenado, sí 0 o -1 es un valor que resulta de alguna evaluación propia de un proceso -independiente del estado del procedimiento almacenado- puedes retornar el valor mediante un parámetro de salida o como una columna de la lista de selección. Has uso de la cláusula RETURN únicamente cuando se trate de un código de retorno.

    CREATE PROCEDURE dbo.NombreProcedimiento    
    AS
    BEGIN
        --El valor 0 o -1 se retorna como una columna de la lista de selección
        SELECT
    	   CASE WHEN DATEPART(DAY, GETDATE()) < 15 THEN -1 ELSE 0 END
    END

    - Aplicación

    using (SqlConnection cn = new SqlConnection("Cadena de conexión"))
    {
    	var cmd = new SqlCommand("NombreProcedimiento", cn);
    
    	cmd.CommandType = CommandType.StoredProcedure;
    
    	//Abrir conexión
    	cn.Open();
    	//Ejecutar la consulta y recuperar el valor que retorna la consulta de selección
    	int result = Convert.ToInt32(cmd.ExecuteScalar());
    
    	if (result == 0)
    	{
    		//...
    	}
    	else
    	{
    		//...
    	}
    }


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta osrol sábado, 8 de julio de 2017 15:42
    • Marcado como respuesta Whookie sábado, 8 de julio de 2017 17:10
    sábado, 8 de julio de 2017 15:00