在公司每天寫Sql寫,存儲過程,可是公司工具模板把建立的語句都寫好了,只負責寫裏面的邏輯,長此以往,建立語句都不會寫了。還有一些知識點都很模糊,日常使用的時候都不清楚,稀裏糊塗的就在用。在這裏整理一下。鞏固複習。編程
一.存儲過程。緩存
1.存儲過程相似編程語言的裏面的函數,方法。將Sql語句封裝在裏面,方便調用。編程語言
2.首先看下建立無參數存儲過程語法。ide
CREATE PROCEDURE MyProTest AS SELECT * FROM dbo.saUser GO
建立有參數的存儲過程函數
CREATE PROCEDURE MyProTest ( @ID INT=0 ) WITH ENCRYPTION /* { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]*/ AS SELECT * FROM dbo.saUser GO
這個地方後面WITH後面跟的值要說明下工具
a.RECOMPILE 代表 SQL Server 不會緩存該過程的計劃,該過程將在運行時從新編譯。在使用非典型值或臨時值而不但願覆蓋緩存在內存中的執行計劃時,請使用 RECOMPILE 選項。加密
b.ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 語句文本的條目。使用 ENCRYPTION 可防止將過程做爲 SQL Server 複製的一部分發布。 說明 在升級過程當中,SQL Server 利用存儲在 syscomments 中的加密註釋來從新建立加密過程。 說白了就是就是對存儲過程進行加密。這個我常常用,上面以惡就不常常用了,在這裏瞭解一下。spa
3.執行存儲過程code
EXEC dbo.MyProTest @ID=1
4.刪除存儲過程blog
DROP PROC dbo.MyProtest
刪除語法簡單說一下。無論刪除表,仍是存儲過程,仍是視圖,仍是函數。刪除語法都是 Drop 關鍵字 +類型+名稱。
二.函數
1.建立語法
a.返回Nvarchar類型參數
CREATE FUNCTION Test ---建立語法 Create關鍵字 +類型 +名稱 ( @iIden INT ---參數 ) RETURNS NVARCHAR(50) --定義返回類型 WITH ENCRYPTION AS BEGIN DECLARE @sUserName NVARCHAR(50) SELECT @sUserName=A.sUserName FROM dbo.saUser A(NOLOCK) WHERE A.iIden=@iIden RETURN @sUserName
END
b.返回表變量的函數
CREATE FUNCTION Test ---建立語法 Create關鍵字 +類型 +名稱 ( @iIden INT ---參數 ) RETURNS @Table TABLE( iiden INT, sName NVARCHAR(50) ) WITH ENCRYPTION AS BEGIN DECLARE @sUserName NVARCHAR(50) INSERT INTO @Table SELECT A.iIden,A.sUserName FROM dbo.saUser A(NOLOCK) WHERE A.iIden=@iIden RETURN END