2010-04-18 30 views
2

我想知道什么是RETURN_VALUE的意思!我被困在这件事情上。如何在SQL Server存储过程中使用RETURN_VALUE?感谢..有人可以解释我的参数RETURN_VALUE吗?

ASP:

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 
    [email protected] varchar(15) 
AS 

回答

2

甲MS SQL存储过程可以返回一个return value - 这是除了输出参数。

上面的代码可以访问此返回值。

有关更多信息,请参见MSDN(RETURN(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 
1

这是从S返回的值tored程序。

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(); 
    } 
} 
+1

你可以给我一个例子吗? – 2010-04-18 17:41:50

0

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

CREATE PROCEDURE usp_jaljava_member_select 
@TLoginName varchar(15), 
@TPassword varchar(20), 
@retval varchar(50) OUTPUT 
[email protected] varchar(15) 
AS 

BEGIN 
declare @errorCodeInCaseOfAnError int 

Return @errorCodeInCaseOfAnError 
END