一、簡單的儲存過程:
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
㈡ 在長沙哪裡有專門學PL\SQL 存儲過程的地方
PL\SQL並不是很難,去培訓機構浪費錢啊
建議你買本好點的書,多看看就好了,目前長沙應該沒有專門培訓PL\SQL的機構。
㈢ sql 存儲過程 概念
在關系資料庫中,SQL語言是應用程序和資料庫管理系統之間的主要交流方法,使用SQL語言編寫代碼時,可以用兩種方法存儲和執行代碼。一種是在客戶端存儲代碼,並創建向資料庫管理系統發送SQL命令並處理返回結果的應用程序;第二種是將這些SQL語句存儲在資料庫管理系統中,這些存儲在資料庫管理系統中的Sql語句就是存儲過程,然後再創建執存儲過程並處理返回結果的應用程序。
例如:你想在很多表中取某些記錄,如果用SQL語言的話很長很復雜,你可以在資料庫里編寫一個存儲過程,這時你用VB,C語言編寫的應用程序代碼里就只要給出存儲過程的名稱就行了
㈣ SQL實現存儲過程
提供4中方案:
1、可以用sql作業的方式來定時執行。
2、編寫服務,定時執行存儲過程。
3、利用ado.net的方式,timmer定時執行來實現。
4、如果是每天的某個時間段來執行的話,可以配置windows計劃任務來執行程序。程序中執行你的存儲過程。
㈤ sql資料庫物理存儲單元是什麼sql資料庫的數據主要以什麼方式存放sql如何確定資料庫文件的存放位置
哈哈,北交的吧。應該許宏麗老師布置的作業。 是內模式。
㈥ sql 存儲過程怎樣保存
方法和詳細的操作步驟如下:
1、第一步,創建一個存儲過程,該代碼如圖所示,見下圖,轉到下面的步驟。
㈦ SQL的存儲過程 語法格式是什麼
這里以創建名為 GetStuCou 的無參數存儲過程為例:
create procere GetStuCou
as
begin //開始存儲過程
select * from Students left join Course c on s.C_S_Id=c.C_Id
end //結束存儲過程
下面是存儲過程的其他用法:
--創建存儲過程
CREATE PROCEDURE PROC(後面接類型)
--定義變數--簡單賦值
declare @a intset @a=5 print @a
--使用select語句賦值
declare @user1 nvarchar(50)
select @user1='張三'
print @user1
declare @user2 nvarchar(50)
--創建臨時表1 create table #DU_User1
(
[ID] [int] NOT NULL,
[Oid] [int] NOT NULL,
);
--定義一個游標
declare user_cur cursor for select ID,Oid,[Login] from ST_User
--打開游標
open user_cur
while @@fetch_status=0 begin
--讀取游標
fetch next from user_cur into @ID,@Oid,@Login
print @ID
--print @Login
end
close user_cur
(7)sql存儲機構擴展閱讀:
創建存儲過程的注意事項:
1、保持事務簡短,事務越短,越不可能造成阻塞。
2、在事務中盡量避免使用循環while和游標,以及避免採用訪問大量行的語句。
3、在啟動事務前完成所有的計算和查詢等操作,避免同一事務中交錯讀取和更新。可以使用表變數預先存儲數據。即存儲過程中查詢與更新使用兩個事務實現。
4、超時會讓事務不執行回滾,超時後如果客戶端關閉連接sqlserver自動回滾事務。如果不關閉,將造成數據丟失,而其他事務將在這個未關閉的連接上執行,造成資源鎖定,甚至伺服器停止響應。
5、避免超時後還可打開事務 SET XACT_ABORT ON統計信息可以優化查詢速度,統計信息准確可以避免查詢掃描,直接進行索引查找。
㈧ 在SQL中存儲過程分為哪五類
1、目錄存儲過程
例如:sp_columns返回當前環境中可查詢的指定表或視圖的列信息。
sp_tables返回當前環境下可查詢的對象的列表(任何可出現在FROM子句中的對象)。
2、復制類存儲過程
例如:sp_addarticle創建項目並將其添加到發布中。此存儲過程在發布伺服器的發布資料庫上執行。
3、安全管理類存儲過程
例如:sp_addrole在當前資料庫創建新的Microsoft SQL Server角色。
sp_password添加或更改Microsoft SQL Server登錄的密碼。
4、分布式查詢存儲過程
例如:sp_foreignkeys返回引用主鍵的外鍵,這些主鍵在鏈接伺服器中的表上。
sp_primarykeys返回指定遠程表的主鍵列,每個鍵列佔一行。
5、擴展存儲過程
例如:xp_sendmail向指定的收件人發送郵件和查詢結果集附件。
xp_startmail啟動SQL郵件客戶端會話。
存儲過程的特點
1、存儲過程在伺服器端運行,執行速度快。
2、存儲過程執行一次後,其執行駐留在高速緩沖存儲器,在以後的操作中,只需從高速緩沖存儲器中調用已編譯好的二進制代碼執行,提高了系統性能。
3、確保資料庫的安全。使用存儲過程可以完成所有的資料庫操作。
4、降低網路負載,提高效率。
5、可以接受用戶參數,亦可返回參數。
6、作為一種安全機制來充分利用:通過對執行某一存儲過程的許可權進行限制,能夠實現對相應的數據的訪問許可權的限制,避免了非授權用戶對數據的訪問,保證了數據的安全。