一、簡單的儲存過程:
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
參考資料
SQL存儲過程使用介紹.csdn博客[引用時間2017-12-31]
『貳』 在SQL中存儲過程的一般語法是什麼
1、 創建語法
createproc|procerepro_name
[{@參數數據類型}[=默認值][output],
{@參數數據類型}[=默認值][output],
....
]
as
SQL_statements
2、 創建不帶參數存儲過程
--創建存儲過程
if(exists(select*fromsys.objectswherename='proc_get_student'))
dropprocproc_get_student
go
createprocproc_get_student
as
select*fromstudent;
--調用、執行存儲過程
execproc_get_student;
3、 修改存儲過程
--修改存儲過程
alterprocproc_get_student
as
select*fromstudent;
4、 帶參存儲過程
--帶參存儲過程
if(object_id('proc_find_stu','P')isnotnull)
dropprocproc_find_stu
go
createprocproc_find_stu(@startIdint,@endIdint)
as
select*fromstudentwhereidbetween@startIdand@endId
go
execproc_find_stu2,4;
5、 帶通配符參數存儲過程
--帶通配符參數存儲過程
if(object_id('proc_findStudentByName','P')isnotnull)
dropprocproc_findStudentByName
go
createprocproc_findStudentByName(@namevarchar(20)='%j%',@nextNamevarchar(20)='%')
as
select*fromstudentwherenamelike@nameandnamelike@nextName;
go
execproc_findStudentByName;execproc_findStudentByName'%o%','t%';
(2)SQL存儲過程操作擴展閱讀:
SQL存儲過程優點:
1、重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。
2、減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。
3、安全性。參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。
『叄』 sql怎樣新建存儲過程
一:創建沒有參數的存儲過程:
CREATE PROCEDURE select_all
AS
BEGIN
SELECT * from T_login1
GO
二:創建帶參數的存儲過程:
CREATE PROCEDURE select_name
@id uniqueidentifier
AS
BEGIN
SELECT * from T_login1 where PSN0001A=@id
GO
(3)SQL存儲過程操作擴展閱讀:
創建存儲過程的注意事項:
1、保持事務簡短,事務越短,越不可能造成阻塞。
2、在事務中盡量避免使用循環while和游標,以及避免採用訪問大量行的語句。
3、在啟動事務前完成所有的計算和查詢等操作,避免同一事務中交錯讀取和更新。可以使用表變數預先存儲數據。即存儲過程中查詢與更新使用兩個事務實現。
4、超時會讓事務不執行回滾,超時後如果客戶端關閉連接sqlserver自動回滾事務。如果不關閉,將造成數據丟失,而其他事務將在這個未關閉的連接上執行,造成資源鎖定,甚至伺服器停止響應。
『肆』 用SQL語句創建存儲過程
--1、創建存儲過程--
if
exists
(select
*
from
sysobjects
where
name='info1')
drop
procere
info1
go
create
procere
info1
@sname
varcher(20),
as
begin
declear
@xinxi
varcher(20)
set
@xinxi='select
學號,姓名,出身日期,系別(注,列名自己設置)
from
student
where
姓名=@sname'
print'@xinxi';
end
--調用存儲過程1--
exec
info1
@sname=姓名
後面的自己參考,可以寫出來
『伍』 創建存儲過程sql語句
1)過程名
存儲過程的名稱,默認在當前資料庫中創建。若需要在特定資料庫中創建存儲過程,則要在名稱前面加上資料庫的名稱,即db_name.sp_name。
需要注意的是,名稱應當盡量避免選取與MySQL內置函數相同的名稱,否則會發生錯誤。
2)過程參數
存儲過程的參數列表。其中,<參數名>為參數名,<類型>為參數的類型(可以是任何有效的MySQL數據類型)。當有多個參數時,參數列表中彼此間用逗號分隔。存儲過程可以沒有參數(此時存儲過程的名稱後仍需加上一對括弧),也可以有1個或多個參數。
MySQL存儲過程支持三種類型的參數,即輸入參數、輸出參數和輸入/輸出參數,分別用IN、OUT和INOUT三個關鍵字標識。其中,輸入參數可以傳遞給一個存儲過程,輸出參數用於存儲過程需要返回一個操作結果的情形,而輸入/輸出參數既可以充當輸入參數也可以充當輸出參數。
『陸』 Sql 中的 存儲過程 使用
以下為引用的內容:
Create procere procee_name
[@parameter data_type][output]
[with]{recompile|encryption}
as
sql_statement
解釋:
output:表示此參數是可傳回的
with {recompile|encryption}
recompile:表示每次執行此存儲過程時都重新編譯一次
encryption:所創建的存儲過程的內容會被加密
二、SQL存儲過程學習:存儲過程的創建
表book的內容如下
編號書名價格
001 C語言入門$30
002 PowerBuilder報表開發 $52
實例1:查詢表Book的內容的存儲過程
create proc query_book
as
select * from book
go
exec query_book
實例2:加入一筆記錄到表book,並查詢此表中所有書籍的總金額
Create proc insert_book
@param1 char(10),@param2 varchar(20),@param3 money,@param4 money output
with encryption ---------加密
as
insert book(編號,書名,價格) Values(@param1,@param2,@param3)
select @param4=sum(價格) from book
go
執行例子:
declare @total_price money
exec insert_book '003','Delphi 控制項開發指南',$100,@total_price
print '總金額為'+convert(varchar,@total_price)
go
存儲過程的3種傳回值:
1.以Return傳回整數
2.以output格式傳回參數
3.Recordset
傳回值的區別:
output和return都可在批次程式中用變數接收,而recordset則傳回到執行批次的客戶端中
『柒』 SQL 中存儲過程怎麼使用
一、簡單的儲存過程:
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
『捌』 plsql中如何執行存儲過程
實現的方法和詳細的操作步驟如下:
1、第一步,雙擊plsql圖標進入登錄界面,輸入用戶名和密碼,然後傳輸資料庫實例名稱,如下圖所示,然後進入下一步。
『玖』 SQL的數據存儲過程如何使用
在sql裡面要執行該存儲過程的話就用EXEC 存儲過程名;如果你的存儲過程帶有參數的話在執行的時候還要在存儲過程名的後面加空格在家參數;
例如創建存儲過程:
CREATE PROCEDURE getStuInfo
@Id INT
AS
SELECT * FROM Student WHERE Id = @Id
執行該存儲過程:
EXEC getStuInfo '101'
這段查詢語句的意思是從學生信息表中查詢出編號為101的學生的所有信息
sql資料庫里的存儲過程還可以在c#窗體應用程序里調用,這就涉及到連接資料庫了,如果你需要的話我可以格尼一段代碼示例
『拾』 在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、作為一種安全機制來充分利用:通過對執行某一存儲過程的許可權進行限制,能夠實現對相應的數據的訪問許可權的限制,避免了非授權用戶對數據的訪問,保證了數據的安全。