當前位置:首頁 » 編程語言 » sql常用功能存儲過程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql常用功能存儲過程

發布時間: 2023-02-14 09:17:24

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實現存儲過程

存儲過程的概念
SQL Server提供了一種方法,它可以將一些固定的操作集中起來由SQL Server資料庫伺服器來完成,以實現某個任務,這種方法就是存儲過程。
存儲過程是SQL語句和可選控制流語句的預編譯集合,存儲在資料庫中,可由應用程序通過一個調用執行,而且允許用戶聲明變數、有條件執行以及其他強大的編程功能。
在SQL Server中存儲過程分為兩類:即系統提供的存儲過程和用戶自定義的存儲過程。

可以出於任何使用SQL語句的目的來使用存儲過程,它具有以下優點:
可以在單個存儲過程中執行一系列SQL語句。
可以從自己的存儲過程內引用其他存儲過程,這可以簡化一系列復雜語句。
存儲過程在創建時即在伺服器上進行編譯,所以執行起來比單個SQL語句快,而且減少網路通信的負擔。
安全性更高。
創建存儲過程

在SQL Server中,可以使用三種方法創建存儲過程 :
①使用創建存儲過程向導創建存儲過程。
②利用SQL Server 企業管理器創建存儲過程。
③使用Transact-SQL語句中的CREATE PROCEDURE命令創建存儲過程。

㈢ 在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%';

(3)sql常用功能存儲過程擴展閱讀:

SQL存儲過程優點:

1、重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。

2、減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。

3、安全性。參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。

㈣ 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

㈤ sql 存儲過程

sql的存儲過程有點類似函數,c#里就像執行sql語句一樣 執行存儲過程就行,

(1)執行一個沒有參數的存儲過程的代碼如下:

SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
然後只要選擇適當的方式執行此處過程,用於不同的目的即可。

(2)執行一個有參數的存儲過程的代碼如下(我們可以將調用存儲過程的函數聲明為ExeProcere(string inputdate)):

SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
(以上代碼相同,以下為要添加的代碼)
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
這樣就添加了一個輸入參數。若需要添加輸出參數:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
若要獲得參儲過程的返回值:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);

㈥ SQL SERVER 如何應用存儲過程呢操作方法有什麼呢

SQL SERVER 如何應用存儲過程呢?

首先最好在SQL SERVER的管理工具中通過create procere寫一條語句來創建存儲過程,創建語句後,點擊工具欄中的執行命令,消息欄中顯示命令已成功完成的消息,證明存儲過程已創建。然後就可以在存儲過程子文件夾下看到自己創建的存儲過程了,執行存儲過程,可以使用exec命令,後跟存儲過程的名稱,另外,還可以在創建存儲過程的時候傳入參數,如下圖,需要使用@符號傳入參數,如果你的存儲過程加了參數,那麼如果你調用的時候沒有傳入參數,SQL SERVER會提示錯誤。

3、存儲過程減少網路流量對於資料庫對象的相同操作,如果將此次操作所涉及的T-SQL語句組織成一個存儲過程,在客戶端調用該存儲過程時,只在網路上傳遞調用語句,否則會是多條 SQL 語句。從而減輕了網路流量,降低了網路負載存儲過程可以用作安全機制,系統管理員可以對要執行的存儲過程的許可權進行限制,從而限制對某些數據的訪問,避免未經授權的用戶訪問數據,保證數據安全。

㈦ mysql中的存儲過程怎麼使用

存儲過程(Stored Procere)是一組為了完成特定功能的SQL語句集功能是將常用或復雜的工作,預先用SQL語句寫好並用一個指定名稱存儲起來, 以後需要資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用 call 存儲過程名字, 即可自動完成命令。存儲過程是由流控制和SQL語句書寫的過程,這個過程經編譯和優化後存儲在資料庫伺服器中,可由應用程序通過一個調用來執行,而且允許用戶聲明變數 。同時,存儲過程可以接收和輸出參數、返回執行存儲過程的狀態值,也可以嵌套調用。

㈧ 程序員工作常用的sql存儲過程

給兩個例子,有問題在追問吧。(sqlserver環境)

CREATEPROCEDUREproc_stu/*proc_stu為存儲過程的名稱*/
AS
DECLARE@writtenAvgfloat,@labAvgfloat/*筆試平均分和機試平均分變數*/
SELECT@writtenAvg=AVG(writtenExam),
@labAvg=AVG(labExam)FROMstuMarks
print'筆試平均分:'+convert(varchar(5),@writtenAvg)
print'機試平均分:'+convert(varchar(5),@labAvg)
IF(@writtenAvg>70AND@labAvg>70)
print'本班考試成績:優秀'/*顯示考試成績的等級*/
ELSE
print'本班考試成績:較差'
print'--------------------------------------------------'
print'參加本次考試沒有通過的學員:'
SELECTstuName,stuInfo.stuNo,writtenExam,labExam/*顯示未通過的學員*/

stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<60ORlabExam<60
GO


CREATEPROCEDUREproc_stu
@writtenPassint=60,/*輸入參數:筆試及格線*/
@labPassint=60/*輸入參數:機試及格線*/
AS
print'--------------------------------------------------'
print'參加本次考試沒有通過的學員:'
SELECTstuName,stuInfo.stuNo,writtenExam,/*查詢沒有通過考試的學員*/
labExamFROMstuInfo
INNERJOINstuMarksON
stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<@writtenPass
ORlabExam<@labPass
GO

㈨ sql有哪些系統存儲過程,各有什麼功能

打開sql2005--資料庫--系統資料庫---master--可編輯性--存儲過程--系統存儲過程。。裡面全是。。
具體都什麼功能 去幫助里 對應的找下。。呵呵。。