当前位置:首页 » 存储配置 » 获取不到存储过程返回结果

获取不到存储过程返回结果

发布时间: 2022-08-15 00:51:08

‘壹’ 如果存储过程返回多个结果集,怎么取结果

1、返回结果集

这是客户端应用程序返回结果的最通用的方法。结果集是通过使用SELECT语句选择数据产生的。结果集可以从永久表、临时表或局部变量中产生。将结果返回到另一个存储过程不是一种有效的方法。存储过程不能访问另一个存储过程建立的结果集。

例如从永久表中返回结果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromPermtable
AS
SELECT au_iname FROM authors
例如从局部变量中创建结果集:

USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromVariable
AS
DECLARE @au_iname char(20)
SELECT @au_iname = au_iname FROM authors
WHERE au_id = ‘172-32-1176’
SELECT @au_id
GO

‘贰’ java调用oracle存储过程无法获得正确的返回值,每次都是0

你通过JDBC这种方式调用存储过程,应该使用 CallableStatement 类, CallableStatement cs=conn.prepareCall(str);

补充一句,避免你在执行有错,
cs.excuse();这个方法为执行,然后在获取输出参数。另外写输出参数的类型时,直Types.类型即可,不用带包。

‘叁’ 执行存储过程没有返回任何结果,我也设置了输出函数,求各位帮忙解答!

那是因为你的@avg_Grade没有接收到值,是空的

先把查询语句单提出来执行 测试是否有值

‘肆’ 如何获取存储过程返回值

1.OUPUT参数返回值

CREATE PROCEDURE [dbo].[nb_order_insert](
@o_buyerid int ,
@o_id bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
INSERT INTO [Order](o_buyerid )
VALUES (@o_buyerid )
SET @o_id = @@IDENTITY
END
END

2.存储过程中获得方法:

DECLARE @o_buyerid int
DECLARE @o_id bigint
DECLARE @result bit
EXEC @result = [nb_order_insert] @o_buyerid ,o_id output

3.SELECT 数据集返回值

CREATE PROCEDURE [dbo].[nb_order_select](
@o_id int
)
AS
BEGIN
SET NOCOUNT ON;
SELECT o_id,o_buyerid FROM [Order]
WHERE o_id = @o_id
GO

‘伍’ 在 sql select 语句中 如何获取 存储过程的返回值

SQL Server中存储过程的返回值不是通过return语句返回的(return语句是在用户自定义函数中使用的),而是通过存储过程的参数来返回,在定义存储过程的参数时使用关键字output来指定此参数是返回值。

而在调用存储过程时,也必须使用关键字给接收返回值的变量,这样才能在调用时获得存储过程的返回值。

示例:

createproceredbo.pr_add@aint,@bint,@cintoutput
as
set@c=@a+@b
go

调用:

declare@vint
executedbo.pr_add1,2,@voutput
select@v

‘陆’ SQL 从触发器获得的值发送到存储过程中获取不到结果集

你可以在触发器上调用存储过程,
触发器中有两个临时表inserted 和deleted ,这两个表的表结构和创建触发器的表是一样的,
inserted表存的是当前插入或更新后的值,
deleted表存的是当前删除或修改前的值.
你可以利用以上两个临时表的值来获得你要的参数值,然后调用时传入存储过程
另外你也可以直接在触发器中操作,不用存储过程。

‘柒’ CallableStatement为什么不能取出存储过程的返回值

Connectionconn=null;
CallableStatementstmt=null;
ResultSetrs=null;try{//获取连接
conn=JdbcUtil.getConnection();//准备sql
Stringsql="CALLpro_findById2(?,?)";//第一个?是输入参数,第二个?是输出参数
//预编译
stmt=conn.prepareCall(sql);
//设置输入参数
stmt.setInt(1,6);//设置输出参数(注册输出参数)
/**
*参数一:参数位置
*参数二:存储过程中的输出参数的jdbc类型VARCHAR(20)*/
stmt.registerOutParameter(2,java.sql.Types.VARCHAR);
//发送参数,执行
stmt.executeQuery();//结果不是返回到结果集中,而是返回到输出参数中
//得到输出参数的值
/**
*索引值:预编译sql中的输出参数的位置*/
Stringresult=stmt.getString(2);//getXX方法专门用于获取存储过程中的输出参数
System.out.println(result);

}catch(Exceptione){
e.printStackTrace();thrownewRuntimeException(e);
}finally{
JdbcUtil.close(conn,stmt,rs);
}

使用executeQuery()

热点内容
存储樱桃 发布:2025-01-03 01:47:02 浏览:8
电脑服务器端口数字 发布:2025-01-03 01:30:06 浏览:747
粉笔教育的初始密码是多少 发布:2025-01-03 01:29:44 浏览:845
安卓怎么取消芒果会员 发布:2025-01-03 01:27:10 浏览:361
无盘电脑服务器多少钱 发布:2025-01-03 01:15:16 浏览:533
征途砸星脚本 发布:2025-01-03 01:14:19 浏览:851
oppo怎么取消qq加密 发布:2025-01-03 01:13:02 浏览:431
硬盘加密恢复出厂设置 发布:2025-01-03 01:04:09 浏览:131
在存储单元 发布:2025-01-03 00:57:19 浏览:914
新能源板块如何配置 发布:2025-01-03 00:57:18 浏览:601