mysql如何導出存儲過程
MySQL是一款功能強大的關系型資料庫,其中的存儲過程是經常被用戶使用的功能。它在復雜的數據操作中起到了非常重要的作用,能夠極大的提高查詢效率。那麼,在MySQL中應該如何查看存儲過程詳情呢?
首先,可以使用show create procere ‘procere-name’語句或show procere status、information_schema.routines表來查看存儲過程的創建語法以及存儲過程的狀態:
# 查看某存儲過程的創建語法
show create procere test_procere;
# 查看有哪些存儲過程以及它們的狀態
show procere status;
# 另一種方法,查看所有的存儲過程
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_TYPE=’PROCEDURE’;
其次,可以使用explain procere ‘procere-name’語句來查看存儲過程執行過程:
explain procure test_procere;
通過執行上面的語句,可以查看執行存儲過程時MySQL內部所涉及的表和其他存儲過程。
最後,可以使用mysql.proc表查看某一存儲過程的代碼定義,其中包含了所有查詢語句:
# 獲取存儲過程中查詢語句
SELECT SPECIFIC_NAME, ROUTINE_DEFINITION
FROM mysql.proc
WHERE SPECIFIC_NAME=’test_procere’;
以上是在MySQL中查看存儲過程詳情的一些方法,應用這些方法可以幫助我們更好的使用存儲過程,進而優化查詢的效率。
㈡ 關於mysql存儲過程
create table mytb
(tid int,
subject varchar(100),
content varchar(100))
eg:測試數據:
20 計算機應用 應用軟體開發
21 計算機操作系統 操作系統詳解
22 c# c#開發實戰
=======================================
說明一點:tid編號是連續的,如(1,2,3,4···)
存儲過程如下,測試通過:
create proc my_search
@beg_id int ,
@end_id int
as
declare @names varchar(200),
@bcp varchar(8000)
if(@beg_id<@end_id)
begin
while @beg_id<=@end_id
begin
select @names=subject from mytb where tid=@beg_id
set @bcp = 'bcp "SELECT content FROM 資料庫名.dbo.mytb where tid = ' + rtrim(@beg_id) + '" queryout "E:\11\' + rtrim(@names) + '.txt" -c -U"sa" -P"sa"'
EXEC master..xp_cmdshell @bcp
set @beg_id=@beg_id+1
end
end
==================加路徑後過程==============
--exec my_search 20,21,'E:\11'
ALTER proc my_search
@beg_id int ,
@end_id int ,
@path varchar(200)
as
if(right(@path,1)='\')
begin
set @path=left(@path,len(@path)-1)
end
declare @names varchar(200),
@bcp varchar(8000)
if(@beg_id<@end_id)
begin
while @beg_id<=@end_id
begin
select @names=subject from mytb where tid=@beg_id
set @bcp = 'bcp "SELECT content FROM cdma.dbo.mytb where tid = ' + rtrim(@beg_id) + '" queryout "'+@path+'\' + rtrim(@names) + '.txt" -c -U"sa" -P"sa"'
EXEC master..xp_cmdshell @bcp
set @beg_id=@beg_id+1
end
end
=======
呵呵,很抱歉啊 樓主,沒能實現你的要求,
MSSQL我不熟,我想語法大概也是差不多吧,