MySQL存儲過程創建的格式如下:
CREATE PROCEDURE 過程名 ([過程參數[,...]])[特性 ...] 過程體
舉例代碼如下:
CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM user; END
存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。
過程體的開始與結束使用BEGIN與END進行標識。
注意:MySQL在5.0以前並不支持存儲過程
② mysql 怎麼導入/執行.SQL(存儲過程)文件
方法一 進入命令行
mysql –u用戶名 –p密碼 –D資料庫<【sql腳本文件路徑全名】,示例:
mysql –uroot –p123456 -Dtest < /home/zj/create_table.sql
注意:
如果在sql腳本文件中使用了use 資料庫,則-D資料庫選項可以忽略
方法二 進入mysql的控制台後,使用source命令執行
Mysql>source 【sql腳本文件的路徑全名】 或 Mysql>\. 【sql腳本文件的路徑全名】,示例:
source /home/zj/create_table.sql
③ mysql存儲過程知識點難學嗎
MySQL存儲過程 一、存儲過程 1.1 什麼是存儲過程 存儲過程(Stored Procere)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,它存儲在資料庫中,一次編譯後永久有效,用戶通...,確實有一定的難度!
④ Mysql 如何一次性將一台伺服器上的所有表結構、數據和存儲過程都導出到移動存儲介質(比如U盤)中
選中你要導出數據腳本的資料庫,會把你選中的存儲過程、表、函數都給導出來,在右側選則你保存的路徑就可以了,如果你要建表腳本,記得選中上面表後面的創建,要重新建庫也是一樣的選擇,sql語句這個不曉得有沒有導出用的
⑤ 求助JAVA調用MYSQL存儲過程的問題
1.資料庫存儲過程:簡單滴說,存儲過程就是存儲在資料庫中的一個程序。
2..資料庫存儲過程作用:
第一:存儲過程因為SQL語句已經預編繹過了,因此運行的速度比較快
第二:存儲過程可以接受參數、輸出參數、返回單個或多個結果集以及返回值。可以向程序返回錯誤原因。
第三:存儲過程運行比較穩定,不會有太多的錯誤。只要一次成功,以後都會按這個程序運行。
第四:存儲過程主要是在伺服器上運行,減少對客戶機的壓力。
第五:存儲過程可以包含程序流、邏輯以及對資料庫的查詢。同時可以實體封裝和隱藏了數據邏輯。
第六:存儲過程可以在單個存儲過程中執行一系列 SQL 語句。
第七:存儲過程可以從自己的存儲過程內引用其它存儲過程,這可以簡化一系列復雜語句。
此外,如果多條SQL語句執行過程中,過程環節返回了數據作為後面環節的輸入數據,如果直接通過
SQL語句執行,勢必導致大量的數據通過網路返回到客戶機,並在客戶機運算;如果封裝在存儲過程中,
則將運算放在伺服器進行,不但減少了客戶機的壓力,同時也減少了網路流量,提高了執行的效率。
3.mysql存儲過程:
MySQL5存儲過程,用得人好像不多。按照資料庫設計原理來講,存儲過程是在db server上預編譯的,所以查詢速度會比較起純SQL語句快很多。可能是現在流行OO,導至存儲過程使用的餘地大打折扣。但如果從效果上來講,用存儲過程來實現業務規則所帶得DB SERVER壓力,比用JAVA類實現業務規則所帶來的WEB SERVER壓力要小。當然存儲過程也不應濫用,象普通的insert、update之類的語句就不需要使用存儲過程了。
MySQL創建procure的語法與sql server/Oracle差別較大。
例1:傳入參數的procere
create procere usp_test(param varchar(20)
select * from talbeName where column=param
例2:更新表的procere
create procere usp_test2 (t varchar(20))
begin
set xname = 'test';
update table set column = xname where column1=t;
end
MySQL創建存儲過程時不帶as,而且()不能省略,即便是沒有傳入參數。這一點象sql server或是oracle那樣直觀,而且聲明變數時直接用declare,不用加的@或@@(in out變數除外)。還有一點是很怪的語法,如果是以「select」為開頭的存儲過程,是不能加"begin end"的。"begin end"表示多條SQL語句的復合體。
當然,事實上幾乎沒有哪款資料庫是完全符合SQL3標準的,多少都含有自己的一些成份裡面,這也造成使用存儲過程會使程序的可移性降低。
調用procere
MySQL使用call關鍵字。例:call usp_test('test');而不是execute,同樣()是不能省略的。
創建完procere後,再看看java是如何調用procere的。
Connection conn = null;
CallableStatementcstmt=null;
ResultSetrs=null;
try{
conn=DbConn.getDbConn();//getpoolconn
CallableStatementcstmt=conn.prepareCall("{callusp_test(?)}");
call.setString(1,"test");
rs=call.executeQuery();
while(rs.next()){
Stringte=rs.getString(1);
System.out.println("te:"+te);
}
}catch(Exceptione){
System.out.println("e:"+e);
}finally{
try{
rs.close();
cstmt.close();
conn.close();
}catch(Exceptionex){
System.out.println("ex:"+ex);
}
}
這里使用的是"{call usp_test()}"來調用存儲過程。同時也可以編程傳入參數,進行查詢。
⑥ mysql存儲過程怎樣批量插入數據
一下代碼運行通過:
delimiter$$;
createprocerelucia_proc16(countint)
begin
DECLAREname_procVARCHAR(20)CHARACTERSETutf8;
DECLAREsex_procVARCHAR(4)CHARACTERSETutf8;
DECLAREage_procINT(10);
DECLAREclass_procVARCHAR(20)CHARACTERSETutf8;
DECLAREAddr_procVARCHAR(50)CHARACTERSETutf8;
DECLAREiINT;
seti=1;
setsex_proc='女';
setage_proc=20;
setclass_proc='山治班';
setAddr_proc='北京市朝陽區';
whilei<countdo
setname_proc=CONCAT('露西亞',i);
insertintostudents(Name,Sex,age,class,Addr)values(name_proc,sex_proc,age_proc,class_proc,Addr_proc);
seti=i+1;
endwhile;
end
$$;
delimiter;
代碼功能:
傳入一個行數,控制插入多少條數據
運行效果:
⑦ mysql只導出某個存儲過程怎麼導最好用mysqlmp命令。
單個的沒有 導出資料庫dbname下面全部的 mysqlmp -R -ndt dbname -u root -p > C:\xxx.sql;
⑧ MySql存儲過程根據基礎表向統計表導值
select agentid,sum(good) as good,sum(normal) as normal,sum(bad) as bad
from
(select agentid,1 as good,0 as normal,0 as bad
from A where content=1
union all
select agentid,0 as good,1 as normal,0 as bad
from A where content=2
union all
select agentid,0 as good,0 as normal,1 as bad
from A where content=3
)B
group by agentid
⑨ MySQL實現創建存儲過程並循環添加記錄的方法
本文實例講述了MySQL實現創建存儲過程並循環添加記錄的方法。分享給大家供大家參考,具體如下:
先創建,然後調用:
--
創建存儲過程
DELIMITER;//
create
procere
myproc()
begin
declare
num
int;
set
num=1;
while
num
<=
24
do
insert
into
t_calendar_hour(hourlist)
values(num);
set
num=num+1;
end
while;
commit;
end;//
--
調用存儲過程
CALL
myproc();
PS:這里再為大家推薦2款常用的sql在線工具供大家參考使用(包含SQL語句用法說明):
SQL在線壓縮/格式化工具:
http://tools.jb51.net/code/sql_format_compress
SQL代碼在線格式化美化工具:
http://tools.jb51.net/code/sqlcodeformat
更多關於MySQL相關內容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數大匯總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧匯總》及《MySQL資料庫鎖相關技巧匯總》
希望本文所述對大家MySQL資料庫計有所幫助。