一、簡單的儲存過程:
1、創建一個存儲過程
create procere GetUsers()
begin
select * from user;
end;12345
2、調用存儲過程
call GetUsers();12
3、刪除存儲過程
drop procere if exists GetUsers;
二、帶參數的存儲過程
1、MySql 支持 IN (傳遞給存儲過程) , OUT (從存儲過程傳出) 和 INOUT (對存儲過程傳入和傳出) 類型的參數 , 存儲過程的代碼位於 BEGIN 和 END 語句內 , 它們是一系列 SQL 語句 , 用來檢索值 , 然後保存到相應的變數 (通過指定INTO關鍵字) ;
2、下面的存儲過程接受三個參數 , 分別用於獲取用戶表的最小 , 平均 , 最大分數 , 每個參數必須具有指定的類型 , 這里使用十進制值(decimal(8,2)) , 關鍵字 OUT 指出相應的參數用來從存儲過程傳出
create procere GetScores(
out minScore decimal(8,2),
out avgScore decimal(8,2),
out maxScore decimal(8,2)
)
begin
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
end;1234567891011
3、調用此存儲過程 , 必須指定3個變數名(所有 MySql 變數都必須以@開始) , 如下所示 :
call GetScores(@minScore, @avgScore, @maxScore);12
4、該調用並沒有任何輸出 , 只是把調用的結果賦給了調用時傳入的變數@minScore, @avgScore, @maxScore, 然後即可調用顯示該變數的值 :
select @minScore, @avgScore, @maxScore;
5、使用 IN 參數 , 輸入一個用戶 id , 返回該用戶的名字 :
create procere GetNameByID(
in userID int,
out userName varchar(200)
)
begin
select name from user
where id = userID
into userName;
end;12345678910
6、調用存儲過程 :
call GetNameByID(1, @userName);
select @userName;123
『貳』 oracle 添加一個計劃任務 每天凌晨兩點 定時執行一個存儲過程 求詳細步驟!!急!!
在你的存儲過程裡面定義一個變數:
v_HH24 CHAR(2) := '00';
begin後面給變數賦值:
v_HH24 := to_char(sysdate, 'HH24');
然後在你執行的代碼外面加上:
IF v_HH24 = '02' THEN
你的代碼;
end if;
然後使用下面的腳本創建job:
begin
sys.dbms_job.submit(job => :job,
what => '你的存儲過程名字;',
next_date => to_date('01-06-2013 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE+60/1440');
commit;
end;
/
『叄』 MSSQL資料庫中定時存儲的存儲過程
您好!要實現你要的功能;操作如下:
一、可以先寫好存儲過程的內容;放在目標資料庫中
二、在MSSQL的SQL server代理——〉作業——〉新建一個作業 在[常規]選項卡中 設置 名稱AUTOZY——〉在[步驟]選項卡中 點擊[新建作業]
三、在彈出的作業步驟窗口中;填寫步聚名稱(自己取一個)--運行身份選擇SA或者WINDOWS運行都可以---在資料庫處選擇 目標資料庫(這步很關鍵)---
在命令 處 寫 exec 存儲過程的名稱(這個不要寫錯)---點擊[確定] 返回上級窗口
四、選擇[計劃]選項卡 --在計劃窗口中可以具體設置怎麼樣定時運行的方案
五、設置好後 [確定]返回上級窗口---再點擊[確定]保存了這個作業
如有不明之處;歡迎CALL 我
『肆』 [存儲過程詳解]sql存儲過程實例詳解
什麼是存儲過程: 存儲過程可以說是一個記錄集吧,它是由一些T-SQL語句組成的代碼塊,這些T-SQL語句代碼像一個方法一樣實現一些功能(對單表或多表的增刪改查),然後再給這個代碼塊取一個名字,在用到這個功能的時候調用他就行了。
存儲過程的好處:
1.由於資料庫執行動作時,是先編譯後執行的。然而存儲過程是一個編譯過的代碼塊,所以執行效率要比T-SQL語句高。
2.一個存儲過程在程序在網路中交互時可以替代大堆的T-SQL語句,所以也能降低網路的通信量,提高通信速率。
3.通過存儲過程能夠使沒有許可權的用戶在控制之下間接地存取資料庫,從而確保數據的安全。
小結:總之存儲過程是好東西,在做項目時屬於必備利器,下面介紹存儲過程的基本語法。
存儲過程的語法和參數講解
存儲過程的一些基本語法:
創建存儲過程的參數:
1.procere_name:存儲過程的名稱,在前面加#為局部臨時存儲過程,加##為全局臨時存儲過程。
2.; number:是可選的整數,用來對同名模鎮派的過程分組,以便用一條 DROP PROCEDURE 語句即可將同組的過程一起除去。例如,名為 orders 的應用程序使用的過程可以命名為 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 語句將除去整個組。如果名稱中包含定界標識符,則數字不應包含在標識符中,只應在 procere_name 前後使用適當的定界符。
3.@parameter:
存儲過程的參數。可以有一個或多個。用戶必須在執行過程時提供每個所聲明參數的值(除非定義了該參數的默認值)。存儲過程最多可以有2.100 個參數。使用 @ 符號作為第一個字元來指定參數名稱。參數名稱必須符合標識符的規則旅缺。每個過程的參數僅用於該過程本身;
相同的參數名稱可以用在其它過程中。默認情況下,參數只能代替常量,而不能用於代替表名、列名或其它資料庫對象的名稱。有關更多信息,請參見 EXECUTE。
4.data_type:參數的數據類型。所有數據類型(包括 text、ntext 和 image)均可以用作存儲過程的參數。不過,cursor 數據類型只能用於 OUTPUT 參數。如果指定的數據類型為 cursor,也必須同時指定 VARYING 和 OUTPUT 關鍵字。有關 SQL Server 提供的數據類型旦賀及其語法的更多信息,請參見數據類型。說明 對於可以是 cursor 數據類型的輸出參數,沒有最大數目的限制。
5.VARYING:指定作為輸出參數支持的結果集(由存儲過程動態構造,內容可以變化)。僅適用於游標參數。
6.default:參數的默認值。如果定義了默認值,不必指定該參數的值即可執行過程。默認值必須是常量或 NULL。如果過程將對該參數使用 LIKE 關鍵字,那麼默認值中可以包含通配符(%、_、[] 和 [^])。
7.OUTPUT:表明參數是返回參數。該選項的值可以返回給 EXEC[UTE]。使用 OUTPUT 參數可將信息返回給調用過程。Text、ntext 和 image 參數可用作 OUTPUT 參數。使用 OUTPUT 關鍵字的輸出參數可以是游標佔位符。
8.RECOMPILE:表明 SQL Server 不會緩存該過程的計劃,該過程將在運行時重新編譯。在使用非典型值或臨時值而不希望覆蓋緩存在內存中的執行計劃時,請使用 RECOMPILE 選項。
9.ENCRYPTION:表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 語句文本的條目。使用 ENCRYPTION 可防止將過程作為 SQL Server 復制的一部分發布。
說明 在升級過程中,SQL Server 利用存儲在 syscomments 中的加密注釋來重新創建加密過程。
10.FOR REPLICATION:指定不能在訂閱伺服器上執行為復制創建的存儲過程。.使用 FOR REPLICATION 選項創建的存儲過程可用作存儲過程篩選,且只能在復制過程中執行。本選項不能和 WITH RECOMPILE 選項一起使用。
11.AS:指定過程要執行的操作。
12.sql_statement:過程中要包含的任意數目和類型的 Transact-SQL 語句。但有一些限制。
小結:看過這些基本語法後,下面我就根據語法創建各式的存儲過程。
創建存儲過程
針對上面的表,我使用存儲過程對它做一些操作:
1.只返回單一記錄集的存儲過程
結果:相當於運行 select * fromUserAccount這行代碼,結果為整個表的數據。
2.沒有輸入輸出的存儲過程
結果:相當於運行insertintoUserAccount (UserName,[PassWord],RegisterTime,RegisterIP)values(9,9,'2013-01-02',9)這行代碼。
3.有返回值的存儲過程
解釋:這里的@@rowcount為執行存儲過程影響的行數,執行的結果是不僅插入了一條數據,還返回了一個值即 return value =1 ,這個可以在程序中獲取,稍後在c#調用存儲過程中會有說到。
4.有輸入參數和輸出參數的存儲過程
解釋:@UserName為輸入參數,@UserID為輸出參數。運行結果為@userID為COOUT(*)即 =1。
5. 同時具有返回值、輸入參數、輸出參數的存儲過程
結果:@userID為COOUT(*)即 =1,Retun Value=1。
6.同時返回參數和記錄集的存儲過程
結果:返回執行select*fromUserAccount 這句代碼的結果集,同時@userID為COOUT(*)即 =1,Retun Value=9。
7.返回多個記錄集的存儲過程
結果:返回兩個結果集,一個為select*fromUserAccount,另一個為select*fromUserAccountwhereUserID>5 。
小結:上面我們創建了各式的存儲過程。
『伍』 SQL存儲過程是怎麼執行的(是執行過程)謝了
就像你調用方法一樣嘛
通過調用
exec 存儲過程名 參數名1,參數名2,.....
進入存儲過程,根據存儲過程編寫語句順序執行
『陸』 怎樣讓sqlserver後台定時執行某個存儲過程
SQL代理中添加工作計劃(job)
『柒』 如何獲取oracle存儲過程的執行計劃
select t.sql_id,
t.sql_text,
s.plan_hash_value,
s.optimizer_cost,
s.executions_total,
s.elapsed_time_total,
s.disk_reads_total,
s.buffer_gets_total
from DBA_HIST_SQLSTAT s, DBA_HIST_SQLTEXT t
where s.sql_id=t.sql_id
and t.sql_text like'%存儲過程名稱攔清%';
沒有想簡鄭前到其他好辦法,確實不太好查了,把存叢春儲過程當作SQL來查找吧。
『捌』 如何每天定時執行一個存儲過程
1、打開SQL Server Management Studio,SQL Server代理--作業--點右鍵--新建作業
2、作業的名稱取為:test,並進行說明,若作業的數量太多,以方便區別; 這里寫上定時執行存儲過程Pr_test,確定保存.
3、點擊常規下面的步驟,按箭頭指示,新建步驟.
4、取名步驟名稱:exec pr_test,注意選擇存儲過程所在的資料庫;錄入需要執行的命令:exec pr_test ,確定保存.
若有其它參數命令也可以編寫
5、新建計劃,進放計劃屬性設置窗口.
6、依然要填寫計劃的名稱:exec pr_test
計劃類型:重復計劃
時間頻率:每月的26日的12點30分自動執行一次
持續時間:無結束日期
確定保存.到此基本功能已經設置完成,額外其它功能可以根據需要進行增加.
『玖』 SQL SERVER 如何應用存儲過程呢操作方法有什麼呢
SQL SERVER 如何應用存儲過程呢?
首先最好在SQL SERVER的管理工具中通過create procere寫一條語句來創建存儲過程,創建語句後,點擊工具欄中的執行命令,消息欄中顯示命令已成功完成的消息,證明存儲過程已創建。然後就可以在存儲過程子文件夾下看到自己創建的存儲過程了,執行存儲過程,可以使用exec命令,後跟存儲過程的名稱,另外,還可以在創建存儲過程的時候傳入參數,如下圖,需要使用@符號傳入參數,如果你的存儲過程加了參數,那麼如果你調用的時候沒有傳入參數,SQL SERVER會提示錯誤。
3、存儲過程減少網路流量對於資料庫對象的相同操作,如果將此次操作所涉及的T-SQL語句組織成一個存儲過程,在客戶端調用該存儲過程時,只在網路上傳遞調用語句,否則會是多條 SQL 語句。從而減輕了網路流量,降低了網路負載存儲過程可以用作安全機制,系統管理員可以對要執行的存儲過程的許可權進行限制,從而限制對某些數據的訪問,避免未經授權的用戶訪問數據,保證數據安全。