Can stored procedures return/output a value like a function can?

  • Sample code:


    CREATE PROCEDURE ColorPopularity

    AS

    BEGIN

    SELECT

    Color, SUM(Quantity) AS QuantitySold
    FROM LineItemDetails
    GROUP BY Color
    ORDER BY QuantitySold DESC

    END

    I see many similarities between stored procedures and functions.  Functions can return values. 

    1.  But can stored procedures return values?
    2.  In the example above, the stored procedure displays the results of a SELECT statement.  Do these records displayed by the SELECT statement count as a returned value?

  • michael.leach2015 - Tuesday, January 29, 2019 4:09 PM

    Sample code:


    CREATE PROCEDURE ColorPopularity

    AS

    BEGIN

    SELECT Color, SUM(Quantity) AS QuantitySold
    FROM LineItemDetails
    GROUP BY Color
    ORDER BY QuantitySold DESC

    END

    I see many similarities between stored procedures and functions.  Functions can return values. 

    1.  But can stored procedures return values?
    2.  In the example above, the stored procedure displays the results of a SELECT statement.  Do these records displayed by the SELECT statement count as a returned value?

    Stored procedures can return values. The results of the select statement you have would be the result set.
    Stored procedures have return values, output parameters and result sets. What you are referring to with returning values like functions would be output parameters.
    The return value for stored procedures is always there meaning you don't have to specify anything. It's usually used for success or failure. Sometimes people will use it similar to output parameters but I never do that. It's good to know if the stored procedure succeeded or not, especially with nested stored procedures. Some client code depends on having the 0 returned from a stored procedure for success. This documentation covers all three - return value, output parameters and result sets: 
    Return Data from a Stored Procedure

    Sue

  • Yes, and you can insert those values into a properly defined table (permanent, temporary, or variable).


    create table #Sample(Color varchar(32), QuantitySold int);

    insert into #Sample(Color, QuantitySold)
    exec ColorPopularity;

  • Sue_H - Tuesday, January 29, 2019 5:15 PM

    michael.leach2015 - Tuesday, January 29, 2019 4:09 PM

    Sample code:


    CREATE PROCEDURE ColorPopularity

    AS

    BEGIN

    SELECT Color, SUM(Quantity) AS QuantitySold
    FROM LineItemDetails
    GROUP BY Color
    ORDER BY QuantitySold DESC

    END

    I see many similarities between stored procedures and functions.  Functions can return values. 

    1.  But can stored procedures return values?
    2.  In the example above, the stored procedure displays the results of a SELECT statement.  Do these records displayed by the SELECT statement count as a returned value?

    Stored procedures can return values. The results of the select statement you have would be the result set.
    Stored procedures have return values, output parameters and result sets. What you are referring to with returning values like functions would be output parameters.
    The return value for stored procedures is always there meaning you don't have to specify anything. It's usually used for success or failure. Sometimes people will use it similar to output parameters but I never do that. It's good to know if the stored procedure succeeded or not, especially with nested stored procedures. Some client code depends on having the 0 returned from a stored procedure for success. This documentation covers all three - return value, output parameters and result sets: 
    Return Data from a Stored Procedure

    Sue

    I read the article.  I have a question about return codes in the screen below.

    data:image/png;base64,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

    The stored procedures returns a result set which is assigned to the variable @return_value.  Then it looks like the SELECT statement is displaying a column titled "Return Value" then it displays what is stored in @return_value.  The variable @return_value holds a data set from the SELECT statement.  So when that variable is displayed, why does it display 0 (I know this is a return code) instead of displaying the results of the SELECT statement?  I know that @return_value is declared as an INT, but even still shouldn't it attempt to display the records from the SELECT statement even with an error?

    My questions:

    1.  How does SQL know to display 0 as a return value after a stored procedure executes successfully?  I don't have that specified in my code for the stored procedure.
    2.  Since the result set is the result of the stored procedure, why doesn't that result set get assigned to @return_value (instead of 0)?

  • michael.leach2015 - Tuesday, January 29, 2019 10:40 PM

    Sue_H - Tuesday, January 29, 2019 5:15 PM

    michael.leach2015 - Tuesday, January 29, 2019 4:09 PM

    Sample code:


    CREATE PROCEDURE ColorPopularity

    AS

    BEGIN

    SELECT Color, SUM(Quantity) AS QuantitySold
    FROM LineItemDetails
    GROUP BY Color
    ORDER BY QuantitySold DESC

    END

    I see many similarities between stored procedures and functions.  Functions can return values. 

    1.  But can stored procedures return values?
    2.  In the example above, the stored procedure displays the results of a SELECT statement.  Do these records displayed by the SELECT statement count as a returned value?

    Stored procedures can return values. The results of the select statement you have would be the result set.
    Stored procedures have return values, output parameters and result sets. What you are referring to with returning values like functions would be output parameters.
    The return value for stored procedures is always there meaning you don't have to specify anything. It's usually used for success or failure. Sometimes people will use it similar to output parameters but I never do that. It's good to know if the stored procedure succeeded or not, especially with nested stored procedures. Some client code depends on having the 0 returned from a stored procedure for success. This documentation covers all three - return value, output parameters and result sets: 
    Return Data from a Stored Procedure

    Sue

    I read the article.  I have a question about return codes in the screen below.

    data:image/png;base64,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

    The stored procedures returns a result set which is assigned to the variable @return_value.  Then it looks like the SELECT statement is displaying a column titled "Return Value" then it displays what is stored in @return_value.  The variable @return_value holds a data set from the SELECT statement.  So when that variable is displayed, why does it display 0 (I know this is a return code) instead of displaying the results of the SELECT statement?  I know that @return_value is declared as an INT, but even still shouldn't it attempt to display the records from the SELECT statement even with an error?

    My questions:

    1.  How does SQL know to display 0 as a return value after a stored procedure executes successfully?  I don't have that specified in my code for the stored procedure.
    2.  Since the result set is the result of the stored procedure, why doesn't that result set get assigned to @return_value (instead of 0)?

    Simply because that's not the way it works.  The variables used with OUT/OUTPUT/RETURN are scalar only.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • michael.leach2015 - Tuesday, January 29, 2019 10:40 PM

     The variable @return_value holds a data set from the SELECT statement.  So when that variable is displayed, why does it display 0 (I know this is a return code) instead of displaying the results of the SELECT statement?  I know that @return_value is declared as an INT, but even still shouldn't it attempt to display the records from the SELECT statement even with an error?

    The @return_value doesn't hold the data set. It has the return value from the execution of the stored procedure. It wouldn't display the records from the select statement - that's the result set, not the return value. It's an integer and result sets can be more than just an integer. You may want to read that document again about return values, output parameters and result sets.

    Sue

  • I tend to structure stored procedures like this.

    begin try
      -- Do some stuff
      return 0;
    end try

    begin catch
      -- Do some error handling
      return -1;
    end catch

    That way whatever calls the procedure gets a clear indication of whether or not it worked. Depending on what the stored procedure does, it may also generate a result set and/or set the value of output parameters (it would do this prior to the return 0 line).

  • Sue_H - Wednesday, January 30, 2019 7:40 AM

    michael.leach2015 - Tuesday, January 29, 2019 10:40 PM

     The variable @return_value holds a data set from the SELECT statement.  So when that variable is displayed, why does it display 0 (I know this is a return code) instead of displaying the results of the SELECT statement?  I know that @return_value is declared as an INT, but even still shouldn't it attempt to display the records from the SELECT statement even with an error?

    The @return_value doesn't hold the data set. It has the return value from the execution of the stored procedure. It wouldn't display the records from the select statement - that's the result set, not the return value. It's an integer and result sets can be more than just an integer. You may want to read that document again about return values, output parameters and result sets.

    Sue

    Ok.  After giving this some more thought, I think I've got it now.  Thank you.

  • Chris Wooding - Thursday, January 31, 2019 9:30 AM

    I tend to structure stored procedures like this.

    begin try
      -- Do some stuff
      return 0;
    end try

    begin catch
      -- Do some error handling
      return -1;
    end catch

    That way whatever calls the procedure gets a clear indication of whether or not it worked. Depending on what the stored procedure does, it may also generate a result set and/or set the value of output parameters (it would do this prior to the return 0 line).

    This is helpful.  Suppose you didn't use begin/end catch and you only used the first block of code.  If it works, it works.  But if it didn't work, I would think that whatever called the procedure would still know that it didn't work because an SQL would generate an error message right?

  • michael.leach2015 - Thursday, January 31, 2019 10:43 AM

    Chris Wooding - Thursday, January 31, 2019 9:30 AM

    I tend to structure stored procedures like this.

    begin try
      -- Do some stuff
      return 0;
    end try

    begin catch
      -- Do some error handling
      return -1;
    end catch

    That way whatever calls the procedure gets a clear indication of whether or not it worked. Depending on what the stored procedure does, it may also generate a result set and/or set the value of output parameters (it would do this prior to the return 0 line).

    This is helpful.  Suppose you didn't use begin/end catch and you only used the first block of code.  If it works, it works.  But if it didn't work, I would think that whatever called the procedure would still know that it didn't work because an SQL would generate an error message right?

    You'd have to leave out the begin try/end try as well and just have the enclosed code block. There must be a catch block if there's a try block. You're correct, you'd receive an error number and message even with no try/catch. I like using it because you can add information, eg. where in the procedure the error occurred (extremely useful if there are many steps).

Viewing 10 posts - 1 through 9 (of 9 total)

You must be logged in to reply to this topic. Login to reply