Может кто-нибудь объяснить мне параметр RETURN_VALUE? - PullRequest
2 голосов
/ 18 апреля 2010

Я хочу знать, что означает RETURN_VALUE! Я застрял в этой вещи. Как использовать RETURN_VALUE в хранимой процедуре SQL Server? спасибо ..

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
   --@TPinCode varchar(15)
AS

Ответы [ 3 ]

2 голосов
/ 18 апреля 2010

Хранимая процедура 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 голос
/ 18 апреля 2010

Это значение, которое будет возвращено из хранимой процедуры.

С Использование хранимой процедуры с параметрами вывода

хранимая процедура 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();
   }
}
0 голосов
/ 18 апреля 2010

Я думаю, имя параметра для возвращаемого значения может быть любым.
Если ваша хранимая процедура возвращает значение, оно может быть записано как

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
...