有人可以在这帮助我,我有一个存储过程,当我运行SP
时没有返回任何值运行为 - 所以在我的java代码中我正在做exec TestSP(?)
并设置1输入参数:
exec TestSP @ErrorDescription=''
在这两方面,我什么也得不回来。
我没有输出只是命令已成功完成,任何想法我需要更改以使此存储过程返回值?
- TESTSP
USE [TESTDB]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Testtbl] @ErrorDescription VARCHAR(40) OUTPUT
AS
DECLARE @status INT
SET @status = (
SELECT status
FROM Testtbl
)
IF @status = 0
SET @ErrorDescription = 'OK'
ELSE
SET @ErrorDescription = 'FAIL'
RETURN @status
我需要在java级别更改以使此工作或SP需要更改吗?
爪哇:
stmt = connection.prepareCall(sql);
stmt.setString(1, errorDesc);
stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
stmt.executeUpdate();
String result = stmt.getString(2);
System.outprintln("Result is: "+result);
需要在java级别进行哪些更改才能使其正常工作,我没有得到变量“result”的结果?
答案 0 :(得分:0)
RETURN
关键字不用于返回值。要返回,您需要SELECT
语句或OUTPUT
变量。
阅读RETURN
文件http://technet.microsoft.com/en-us/library/ms174998.aspx
而不是RETURN @status
您需要SELECT @status
以下是使用OUTPUT
CREATE PROC testSP
(
@pOut VARCHAR(40) OUTPUT
)
AS
BEGIN
DECLARE @something INT = 1;
IF @something = 0
SET @pOut = 'Zero'
IF @something = 1
SET @pOut = 'One'
END
DECLARE @outparam VARCHAR(10)
EXEC testSP @pOut = @outparam OUTPUT
SELECT @outparam
正如您所见,OUTPUT
参数需要设置为某个值。如果您未指定OUTPUT
,则会将其视为输入
答案 1 :(得分:0)
要获得返回值,您需要将其指定给变量。
要获取输出参数,需要在调用过程
时添加output关键字即:
declare @ret int, @ErrorDescription varchar(50)
exec @ret = TestSP @ErrorDescription output
select @ret, @ErrorDescription