【问题标题】:Can someone explain me the parameter RETURN_VALUE?有人可以解释一下参数 RETURN_VALUE 吗?
【发布时间】:2011-02-09 10:19:44
【问题描述】:

我想知道 RETURN_VALUE 是什么意思!我被这件事困住了。如何在 SQL Server 存储过程中使用 RETURN_VALUE?谢谢..

平均售价:

Set cmdDB = Server.CreateObject("ADODB.Command")
With cmdDB
   .ActiveConnection = ADOConM
   .CommandText = "usp_jaljava_member_select"
   .CommandType = adCmdStoredProc
   .Parameters.Append .CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 0)
   .Parameters.Append .CreateParameter("@TLoginName", adVarChar, adParamInput, 15, lcase(TLoginName))
   .Parameters.Append .CreateParameter("@TPassword", adVarChar, adParamInput, 20, TPassword)
   .Parameters.Append .CreateParameter("@retval", adVarChar, adParamOutput, 50)

' .Parameters.Append .CreateParameter("@TPinCode", adVarChar, adParamInput, 15,TPinCode) .Execute,,adExecuteNoRecords

   RetVal = .Parameters("@retval")
   Ret = Trim(.Parameters("RETURN_VALUE"))

   'Set .ActiveConnection = Nothing
End With
Set cmdDB = Nothing

UTid = RetVal

SQL Server 存储过程:

CREATE PROCEDURE usp_jaljava_member_select 
   @TLoginName varchar(15),
   @TPassword varchar(20),
   @retval varchar(50) OUTPUT
   --@TPinCode varchar(15)
AS

【问题讨论】:

    标签: sql-server asp-classic sql-server-2000 ado


    【解决方案1】:

    这是将从存储过程返回的值。

    来自Using a Stored Procedure with Output Parameters

    您可以使用的 SQL Server 存储过程 可以调用是返回一或 更多的 OUT 参数,它们是 存储过程的参数 用于将数据返回给 调用应用程序。

    来自链接

    CREATE PROCEDURE GetImmediateManager
       @employeeID INT,
       @managerID INT OUTPUT
    AS
    BEGIN
       SELECT @managerID = ManagerID 
       FROM HumanResources.Employee 
       WHERE EmployeeID = @employeeID
    END
    
    public static void executeStoredProcedure(Connection con) {
       try {
          CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");
          cstmt.setInt(1, 5);
          cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
          cstmt.execute();
          System.out.println("MANAGER ID: " + cstmt.getInt(2));
       }
       catch (Exception e) {
          e.printStackTrace();
       }
    }
    

    【讨论】:

      【解决方案2】:

      MS SQL 存储过程可以返回 return value - 这与输出参数不同。

      上面的代码让你可以访问这个返回值。

      有关详细信息,请参阅MSDN(返回 (Transact-SQL))。

      所以,对于下面的存储过程:

      CREATE PROCEDURE checkstate @param varchar(11)
      AS
         IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE ContactID = @param) = 'WA'
         RETURN 1
      ELSE
         RETURN 2;
      GO
      

      以下代码会将Ret 设置为1 或2,具体取决于传入的参数和数据:

      Set cmdDB = Server.CreateObject("ADODB.Command")
      With cmdDB
          .ActiveConnection = ADOConM
          .CommandText = "checkstate"
          .CommandType = adCmdStoredProc
          .Parameters.Append .CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 0)
          .Parameters.Append .CreateParameter("@param", adVarChar, adParamInput, 11, "Contact")
      
          .Execute,,adExecuteNoRecords
      
          Ret = Trim(.Parameters("RETURN_VALUE"))
      
      End With
      Set cmdDB = Nothing
      

      【讨论】:

        【解决方案3】:

        我认为,返回值的参数名称可以是任何东西。
        如果你的存储过程返回一个值,它可以写成

        CREATE PROCEDURE usp_jaljava_member_select 
        @TLoginName varchar(15),
        @TPassword varchar(20),
        @retval varchar(50) OUTPUT
        --@TPinCode varchar(15)
        AS
        
        BEGIN
        declare @errorCodeInCaseOfAnError int
        
        Return @errorCodeInCaseOfAnError
        END
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-22
          • 2016-12-12
          • 2011-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多