tsql存儲過程
sql存儲過程說簡單點就是一個在t-sql下用戶可以自行定義的函數,
但是與一般的函數也有不同的地方,比如它的返回值只能RETURN(INT類型),如果你要輸出什麼信息的話只能用OUTPUT.這也是存儲過程的一個特色吧,設定的參數可以有輸出。講起來有點抽象,給你個例子看看吧!
首先創建一個存儲過程
CREATE
PROCEDURE
cunchuguocheng
@a
int,
@b
int,
@c
int
output
as
begin
select
@c
=
@a+@b
return(0)
end
然後調用這個存儲過程
declare
@value
int,
--返回值
@c
int
--結果值
exec
@value
=
cunchuguocheng
2,2,@c
output
select
@value
as
返回值
select
@c
as
結果值
程序寫的很簡單,你運行一下我想你就會對存儲過程有所了解了。
B. T-SQL和存儲過程有什麼區別
區別T-SQL是語言,存儲過程是資料庫一種對象
T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增強版,它是用來讓應用程式與 SQL Server 溝通的主要語言。
Transact-SQL中的存儲過程,非常類似於Java語言中的方法,它可以重復調用。當存儲過程執行一次後,可以將語句緩存中,這樣下次執行的時候直接使用緩存中的語句。這樣就可以提高存儲過程的性能。
Ø 存儲過程的概念
存儲過程Procere是一組為了完成特定功能的SQL語句集合,經編譯後存儲在資料庫中,用戶通過指定存儲過程的名稱並給出參數來執行。
存儲過程中可以包含邏輯控制語句和數據操縱語句,它可以接受參數、輸出參數、返回單個或多個結果集以及返回值。
由於存儲過程在創建時即在資料庫伺服器上進行了編譯並存儲在資料庫中,所以存儲過程運行要比單個的SQL語句塊要快。同時由於在調用時只需用提供存儲過程名和必要的參數信息,所以在一定程度上也可以減少網路流量、簡單網路負擔。
C. T-SQL存儲過程是什麼
就是在資料庫裡面
預先寫好了的
用來操作資料庫的語句
一般都需要程序提供
存儲過程中的
變數
來現實操作
例子:
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
要用的時候,程序就調用記錄著上這些語句的存儲過程的名字
並把
param1~4
的值也在調用的時候
寫出來
這樣就不用打那麼多的語句,而且對於速度也有一定的幫助
D. 在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%';

(4)tsql存儲過程擴展閱讀:
SQL存儲過程優點:
1、重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。
2、減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。
3、安全性。參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。
E. 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

(5)tsql存儲過程擴展閱讀:
創建存儲過程的注意事項:
1、保持事務簡短,事務越短,越不可能造成阻塞。
2、在事務中盡量避免使用循環while和游標,以及避免採用訪問大量行的語句。
3、在啟動事務前完成所有的計算和查詢等操作,避免同一事務中交錯讀取和更新。可以使用表變數預先存儲數據。即存儲過程中查詢與更新使用兩個事務實現。
4、超時會讓事務不執行回滾,超時後如果客戶端關閉連接sqlserver自動回滾事務。如果不關閉,將造成數據丟失,而其他事務將在這個未關閉的連接上執行,造成資源鎖定,甚至伺服器停止響應。
F. T-SQL存儲過程是什麼
CLR的重要性有幾個比較大的原因。首先,由於SQL Server編程已經成熟了,編碼器運行在SQL Server 自身可能的限制之中,並且很大程度上依賴於外部代碼來執行一些繁重的操作。T-SQL (Transact-SQL)在返回數據集合方面非常好,但是在其他方面就不是很好了。CLR使得解決問題和縮減SQL Server內部的數據復製成為可能,通過在SQL Server中需要完全地分離程序來努力實現。.NET操縱代碼以及執行速度方面比SQL Server和T-SQL 強得多;.NET中同樣位置的代碼由於是二進制,因此其運行多次仍然比構建為存儲過程快上許多。
使用CLR的另一個巨大的好處就是:安全。所有的代碼都是在運行之前檢測類型和許可安全的。例如,先前沒有被寫入的內存是不會被請求中的代碼訪問的。CLR還非常的完善;.NET框架中的素有的東西都可以在存儲過程、觸發器或者用戶函數中進行訪問——除了處理類似用戶界面的類,這些類在SQL Server中沒有用處。
為了避免CLR的瘋狂運行,微軟創建了一個三層的安全模型,規定了CLR代碼是如何調用的:安全、外部訪問和不安全(SAFE, EXTERNAL_ACCESS and UNSAFE)。安全許可權設置與傳統的可以執行的存儲過程一樣重要。它不可以被SQL Server自身之外的任何東西修改。外部訪問允許通過.NET來訪問注冊表和文件系統。不安全的命名很恰當。被標記為不安全的代碼不能做任何事情,並且他們實際上在調試或者試驗環境之外無法使用。大多數的編程人員都不需要使用高於外部訪問的東西。(如果你需要在存儲過程或者函數的環境內訪問文件系統或者注冊表,那麼很有可能標記著你需要重新考慮你正在做的事情的邏輯了。)
然而,CLR並不適合所有的東西。有一件事,它可能最適合那些不輕松、需要編程的、在T-SQL 中實現的環境。許多簡單的操作可以作為T-SQL中的存儲過程完成,並不需要做成外部處理。這意味著上下文替換和額外的事務負擔,這兩項中的每一項都會抵消你使用CLR帶來的最主要的速度的提升。CLR用於替換擴展存儲過程是最好的——例如,那些與資料庫關系密切,但是T-SQL 處理起來過於繁瑣的,並且很難輕松地移動到事物的業務邏輯端的。
還有一個可能的不利是:正如SQL 的領袖Rod Paddock 在他的blog裡面指出的,如果你將業務邏輯的某個部分移動到更接近資料庫,那麼有可能引起可測量性的問題。不管怎麼說,SQL Server都更適合按比例擴大地放在單個的大型機上,而不是分布在多個較小的機器上(這通常是業務邏輯的測量方式S)。以上指出了有選擇地使用CLR是多麼的重要。T-SQL 非常緊湊並且有效率;CLR/.NET 具有擴展性和包容性。正確的工作是採用正確的工具,雖然擁有很多的選擇是多麼好的一件事情。
G. SQL中存儲過程是干什麼用的
存儲過程是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,它存儲在資料庫中,一次編譯後永久有效,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象。
資料庫存儲過程的實質就是部署在資料庫端的一組定義代碼以及SQL。將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來,那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令。
每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。

(7)tsql存儲過程擴展閱讀:
SQL中存儲過程優點:
1、重復使用。存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。
2、減少網路流量。存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。
3、安全性。參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。
4、存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
H. SQL存儲過程如何調用存儲過程
1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。

