mysql存儲過程查詢結果
通過group by就可以一次性返回結果集了
selectFROM_UNIXTIME(date,'%m.%d'),count(1),sum(money)fromtestswheredate>='startTimes'anddate<='endTimes'groupbyFROM_UNIXTIME(date,'%m.%d')
你拿這個去執行
select FROM_UNIXTIME(date,'%m.%d'),count(1),sum(money) from tests where date>=1469980800 and date<=1470585599 group by FROM_UNIXTIME(date,'%m.%d');
這個返回的結果就是8月1號~8月7號每天的數據量及金額
⑵ MySQL存儲過程會直接查詢主庫
主庫和從庫都直接可以查詢。
MySQL存儲過程-循環遍歷查詢到的結果集:根據MySQL的語法創建存儲過程,要注意的是如果循環遍歷查詢到的結果集,取出結果集中的數據做操作。
⑶ 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 ----將存儲過程返回的列值再重新插入源表中 insert into #tmp(coly) EXEC sp_d select * from #tmpendGOEXEC sp_edrop proc sp_c drop proc sp_d
⑷ 怎樣得到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(); // 檢查是否存在更多結果集
}
⑸ 在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----創建返回遊標的存儲過程
⑹ mysql存儲過程實現數據查詢與插入
INSERT into total_score_tmpD(
DepartmentNameEnd, StaffId,
StaffName,
CountPerHour,
SkillScoreDisCount ,
DealCount ,
ValueCount,
ValueCountDisCount
)
SELECT DepartmentName, StaffId,
StaffName,
3600/(Select DealAvgSeconds from deal_name_type where DealId='121300')*AVG(DealAvgSeconds/WaitSeconds) ,
Round(3600/(Select DealAvgSeconds from deal_name_type where DealId='121300')*avg(DealAvgSeconds/WaitSeconds)/(select Max(SunValue) From total_score_tmp33)*(select CAST(OptionValue as decimal) from sys_info WHERE OptionName='工作技能權重'),2),
count(StaffId),
Sum(DealValue),
Round(Sum(DealValue)/(select Max(SunValue) From total_score_tmp44)*(select CAST(OptionValue as decimal) from sys_info WHERE OptionName='工作效益權重'),2)
From deal_record
where DepartmentName like concat(DepartmentName2,'%') and DealDateTime BETWEEN STARTDealDateTime and endDealDateTime
group by StaffId;
insert into total_score_tmpc(DepartmentName , StaffId,
StaffName,
ClientNum ,
EvaluateScore ,
EvaluateScoreDisCount)
SELECT DepartmentName, StaffId,
StaffName,
count(StaffId),
Sum(EvaluatePrice),
Round((Sum(EvaluatePrice)/(select Max(SunValue) From total_score_tmp22))*(select CAST(OptionValue as decimal) from sys_info WHERE OptionName='服務評價權重'),2)
From evaluate_record
where DepartmentName like concat(DepartmentName2,'%') and EvaluateDateTime BETWEEN STARTDealDateTime and endDealDateTime
group by StaffId;
⑺ MYSQL的存儲過程如何返回查詢到的行數據
out返回只能是確定的某種類型的一個值,例如VARCHAR或者INT等等,你想返回多條記錄的話只需要在最後加上一個或者多個SELECT語句就行了啊,然後在外面用ResultSet對象接住就行了。
⑻ mysql存儲過程調用成功了怎麼查詢
把maxf和avgf設置成存儲過程的返回值,調用的時候取返回值就行了