程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 關於SQL 存儲進程入門基本(基本常識)

關於SQL 存儲進程入門基本(基本常識)

編輯:MSSQL

關於SQL 存儲進程入門基本(基本常識)。本站提示廣大學習愛好者:(關於SQL 存儲進程入門基本(基本常識))文章只能為提供參考,不一定能成為您想要的結果。以下是關於SQL 存儲進程入門基本(基本常識)正文


年夜學外面對存儲進程沒有講到甚麼,任務了一段時光,對存儲進程照樣沒有效到,基本不須要去寫存儲進程,能夠是做的軟件偏向的緣由吧。為了今後成長,決議從零開端進修下。

這裡看看存儲進程的界說,

存儲進程(Stored Procedure),是一組為了完成特定功效的SQL 語句,集經編譯後存儲在數據庫中,用戶經由過程指定存儲進程的名字並給出參數,假如該存儲進程帶有參數來履行。

在SQL Server 的系列版本中,存儲進程分為兩類:體系供給的存儲進程和用戶自界說存儲進程。

  體系SP,重要存儲master 數據庫中,並以sp_為前綴而且體系存儲進程重要是從體系表中獲得信息,從而為體系治理員治理SQL Server。

    經常使用體系存儲進程有:


exec sp_databases; --檢查數據庫
exec sp_tables;        --檢查表
exec sp_columns student;--檢查列
exec sp_helpIndex student;--檢查索引
exec sp_helpConstraint student;--束縛
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--檢查存儲進程創立、界說語句
exec sp_rename student, stuInfo;--修正表、索引、列的稱號
exec sp_renamedb myTempDB, myDB;--更改數據庫稱號
exec sp_defaultdb 'master', 'myDB';--更改登錄名的默許數據庫
exec sp_helpdb;--數據庫贊助,查詢數據庫信息
exec sp_helpdb master;

用戶自界說存儲進程是由用戶創立,並能完成某一特定功效,如:查詢用戶所需數據信息的存儲進程。

這裡我們看看存儲進程的利益;

        (1)反復應用。存儲進程可以反復應用,從而可以削減數據庫開辟人員的任務量。

        (2)進步機能。存儲進程在創立的時刻就停止了編譯,未來應用的時刻不消再從新編譯。普通的SQL語句每履行一次就須要編譯一次,所以應用存儲進程進步了效力。

        (3)削減收集流量。存儲進程位於辦事器上,挪用的時刻只須要傳遞存儲進程的稱號和參數便可以了,是以下降了收集傳輸的數據量。

        (4)平安性。參數化的存儲進程可以避免SQL注入式的進擊,並且可以將Grant、Deny和Revoke權限運用於存儲進程。

 

   好了,我們來看看創立的根本語法

界說存儲進程的語法

    CREATE  PROC[EDURE]  存儲進程名

              @參數1  數據類型 = 默許值,

               …… ,

              @參數n  數據類型 OUTPUT

            AS

            SQL語句

    GO
,參數是可選的
,參數分為輸出參數、輸入參數
,輸出參數許可有默許值

  這裡來創立一個簡略的存儲進程
 

CREATE PROCEDURE UserLogin
@name varchar(20),
@password varchar(20)

AS

-- 界說一個暫時用來保留暗碼的變量
--DECLARE @strPwd NVARCHAR(20) 這裡先不引見變量。稍後的文章會具體講到
BEGIN
select * from userinfo where userName=@name and userPass=@password
END
GO

起首我們用簡略的sql查詢

select * from userinfo where userName='admin'

查詢成果:

---------------------

UserName  UserPass

Admin      Admin

如今我們來履行我們的存儲進程
exec UserLogin admin,admin

--或如許挪用:
EXEC UserLogin @name='admin',@password='admin'

查詢成果:

---------------------

UserName  UserPass

Admin      Admin

留意,在SQL SERVER中,一切用戶界說的變量都以“@”開首,OUTPUT症結字表現這個參數是用來輸入的,AS以後就是存儲進程內容了。只需將以上代碼在“查詢剖析器”裡履行一次,SQL SERVER就會在以後數據庫中創立一個名為“UserLogin”的存儲進程。你可以翻開“企業治理器”,選擇以後操作的數據庫,然後在右邊的樹型列表當選擇"可編程性->存儲進程",此時便可以在左邊的列表中看到你方才創立的存儲進程了(假如沒有,刷新一下便可)。

看到了在數據中挪用存儲進程的辦法有兩種(這裡EXEC與EXECUTE等效);

      EXEC  進程名  參數值1,參數值2,....


或許

 EXEC 參數1=參數值1,參數2=參數值2....

下面我們也看到了。

 假如要刪除一個存儲進程,用drop

像如許


drop PROCEDURE UserLogin

創立如許的存儲進程有甚麼用呢,不是只能在數據中檢查賽。

我們在做web或許winform 法式,假定須要個登錄,好,我們可以挪用用這個存儲進程來登錄,依據傳入的參數,假如查詢出來有記載,那末這筆記錄在數據庫中存在,表現登錄勝利,不然掉敗。

如許做的目標加倍平安,可以避免sql注入。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved