當前位置:首頁 » 存儲配置 » mysql2個存儲過程返回結果

mysql2個存儲過程返回結果

發布時間: 2022-09-05 13:39:18

⑴ mysql如何兩個存儲過程返回的結果集放入同一表中

不能合並到同一個存儲過程嗎?如果不能的話,只能新建一張表,然後兩個過程都操作這張表。

⑵ MYSQL 存儲過程能返回結果集嗎

可以,存儲過程只是把你的查詢語句形成一個固定的格式,這樣你要查詢的時候就不用每次都執行查詢語句了,sql在執行的時候都會將你的sql語句轉換為位元組碼,然後機器才能運行,存儲過程就節省了這一步,已經形成了位元組碼,所以速度才會快,特別是執行次數比較多的時候,可以節省很多時間

⑶ 如何 mysql 存儲過程返回值

mysql中要獲得存儲過程的返回值,可以增加一個out參數,用來返回。

mysql中存儲過程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid;

SET autocommit = 0;
IF EXISTS (
SELECT
*
FROM
t_user_voucher tuv,
t_voucher tv
WHERE
tv.id = tuv.voucherid
AND tv.batch =@batch_a
) THEN

SET result = 1;-- 已存在

SELECT
result;

ELSE

IF @c_count_a > 0 THEN

IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 THEN

IF @isdead_a = 1 THEN
INSERT INTO t_user_voucher (userid, voucherid, isdead)
VALUES
(userid, voucherid, 1);
UPDATE t_voucher SET c_count = c_count-1 where id = voucherid;

SET result = 0;-- 成功
END;

⑷ 怎樣得到mysql存儲過程多條語句的結果集

存儲過程經常需要返回多個結果集。 Mysql 中直接用 select 即可返回結果集。而 oracle 則需要使用游標來返回結 果 集。這一點 Mysql 相對比較方便,如下代碼即可實現輸出兩個結果集:
CREATE PROCEDURE test_proc_multi_select()
BEGIN
select * from testproc;
select * from testproc where id=1;
END;
java 中利用循環,即可獲取結果集數據:

con = MConnection.getConn();
String sql = "{call test_proc_multi_select()}";
cs = con.prepareCall(sql);
boolean hadResults = cs.execute();
int i = 0;
while (hadResults) {
System.out.println("result No:----" + (++i));
ResultSet rs = cs.getResultSet();
while (rs != null && rs.next()) {
int id1 = rs.getInt(1);
String name1 = rs.getString(2);
System.out.println(id1 + ":" + name1);
}
hadResults = cs.getMoreResults(); // 檢查是否存在更多結果集
}

⑸ 求助大神 mybatis 使用Mysql 的存儲過程 怎麼返回多個結果集

如何通過MyBatis獲取mysql存儲過程返回的不確定個數的多個結果集
如果對select
返回的結果行都需要處理,使用游標。
如果只想取得返回多行中的一行,使用limit。

php mysql 存儲過程 返回值

一般你從登陸端獲得用戶名和密碼,
1、然後你通過用戶名在資料庫中查找
2、如果該用戶名不存在,那麼返回false
3、如果用戶名存在,那麼獲得相應的密碼
4、將從資料庫中得到的密碼和登陸端得到的密碼進行比較
5、如果相同,返回true,表明登陸成功;如果不等返回false,表明失敗

這樣不用資料庫的查詢語句」select STH from sth_table where name=「STHNAME" AND password="STHPASSWORD"
並且也安全

⑺ MYSQL如何把存儲過程所返回的結果集插入到表

從存儲過程返回表類型的值也有二種:
1.存儲過程使用浮標參數,即同時指定CURSOR VARYING OUTPUT項.調用者可以使用while及fetch循環遍歷該浮標.
2.直接將存儲過程返回的結果集插入到表中,即使用insert into 表名 exec 存儲過程.此種方式中注意存儲過程返回的結果集列與insert的列要完全對應,可以在insert中指定列名來保證對應關系.
------------------------------------------------------------------------------測試:------------------------------------------------------------------------------
----建立測試用的臨時表
create table #tmp (colx int,coly int)
insert into #tmp values(1,2)
insert into #tmp values(2,3)
insert into #tmp values(3,4)
select * from #tmpGO----創建返回遊標的存儲過程
create proc sp_c @cur CURSOR VARYING OUTPUTASbeginset @cur = CURSOR for select colx from #tmp
open @cur /*該過程返回遊標,該游標為colx列的查詢結果*/endGO----創建返回表的存儲過程
create proc sp_dasselect coly from #tmp /*該過程返回coly列的查詢結果*/go----創建用於調用以上二個存儲過程的存儲過程
create proc sp_easbegindeclare @x int
declare @cur cursor
----接收游標,並遍歷游標
EXEC sp_c @cur OUTPUT
fetch next from @cur into @x
while (@@FETCH_STATUS = 0)beginprint @xfetch next from @cur into @xENDclose @curdeallocate @cur
----將存儲過程返回的列值再重新插入源表中

⑻ MYSQL的存儲過程如何返回查詢到的行數據

out返回只能是確定的某種類型的一個值,例如VARCHAR或者INT等等,你想返回多條記錄的話只需要在最後加上一個或者多個SELECT語句就行了啊,然後在外面用ResultSet對象接住就行了。

⑼ 該如何寫存儲過程,實現mysql返回多個結果,其中的結果可能為空

就跟寫Java代碼里有返回值的方法一樣,只是把語法換成Sql裡面的寫法就好了
aaa: 輸入參數
bbb: 輸出參數,一個表對象,或者一個結果集

proce getMySqlDate(aaa IN varchar2,
bbb OUT tmpTable%ROWTYPE) IS

本體
proce getMySqlDate(aaa IN varchar2,
bbb OUT tmpTable%ROWTYPE)
begin
--查詢數據
CURSOR curCc is
select a,b from tab1;
type typeCurCc of table curCc%ROWTYPE;
typeCurCc tabCurCc; -- 定義游標類型

--打開游標把查詢處理的數據,賦值到bbb的輸出參數就行了。
open 游標
....
bbb.a = 游標.a;
close 游標;

--存儲過程終了
END getMysql;

⑽ php調用返回多結果的mysql存儲過程

直接處理存儲過程的輸出參數即可。
調用存儲過程的方法。
a。如果存儲過程有 IN/INOUT參數,聲明一個變數,輸入參數給存儲過程,該變數是一對,
一個php變數(也可以不必,只是沒有php變數時,沒有辦法進行動態輸入),一個Mysql
變數。
b。如果存儲過程有OUT變數,聲明一個Mysql變數。
mysql變數的聲明比較特殊,必須讓mysql伺服器知道此變數的存在,其實也就是執行一條mysql語句。
入set @mysqlvar=$phpvar ;
c。使用mysql_query()/mysql_db_query()執行mysql 變數聲明語句。
mysql_query("set @mysqlvar【=$pbpvar】");
這樣,在mysql伺服器裡面就有一個變數,@mysqlar。如果時IN參數,那麼其值可以有phpar傳入。
d。 如果時存儲過程。
1。執行 call procere()語句。
也就是mysql_query("call proceer([var1]...)");
2. 如果有返回值,執行select @ar,返回執行結果。
mysql_query("select @var)"
接下來的操作就和php執行一般的mysql語句一樣了。可以通過mydql_fetch_row()等函數獲得結果。
如果時函數。 直接執行 select function() 就可以了。

傳出參數的存儲過程:
$sql = "
create procere myproce3(out score int)
begin
set score=100;
end; ";
mysql_query($sql);//創建一個myproce3的存儲過程
$sql = "call test.myproce3(@score);";
mysql_query($sql);//調用myproce3的存儲過程
$result = mysql_query('select @score;');
$array = mysql_fetch_array($result);
echo '<pre>';print_r($array);

熱點內容
AI智能名片小程序源碼 發布:2025-01-10 17:27:33 瀏覽:403
ios開發演算法 發布:2025-01-10 17:21:49 瀏覽:369
蘇州什麼是刀片伺服器 發布:2025-01-10 17:08:55 瀏覽:916
樓宇對講linux和安卓哪個好 發布:2025-01-10 17:08:53 瀏覽:630
編程貓電腦版 發布:2025-01-10 17:07:25 瀏覽:941
上傳音樂表 發布:2025-01-10 17:04:52 瀏覽:166
如何在安卓tv上裝當貝市場 發布:2025-01-10 16:59:54 瀏覽:979
電腦鐵電存儲 發布:2025-01-10 16:57:19 瀏覽:464
c語言源程序的基本單位 發布:2025-01-10 16:47:37 瀏覽:287
王者安卓賬號如何換到蘋果 發布:2025-01-10 16:34:47 瀏覽:730