當前位置:首頁 » 存儲配置 » 獲取不到存儲過程返回結果

獲取不到存儲過程返回結果

發布時間: 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()

熱點內容
安卓機怎麼外接音效卡 發布:2024-12-31 04:32:57 瀏覽:255
編譯程序匯編程序鏈接程序 發布:2024-12-31 04:32:48 瀏覽:77
迅雷在線ftp黃色 發布:2024-12-31 04:26:28 瀏覽:541
sql查看系統表 發布:2024-12-31 04:18:21 瀏覽:629
無盡之海伺服器怎麼樣 發布:2024-12-31 04:16:07 瀏覽:169
雨人系統應用伺服器地址怎麼填 發布:2024-12-31 04:01:48 瀏覽:115
流放者柯南如何修改伺服器 發布:2024-12-31 04:00:16 瀏覽:279
統計php 發布:2024-12-31 03:51:42 瀏覽:982
加密狗編程 發布:2024-12-31 03:47:26 瀏覽:334
買腳本騙局 發布:2024-12-31 03:47:26 瀏覽:31