SqlServer存儲過程及函數


  存儲過程和函數類似於Java中的方法。

⒈存儲過程

  一組預先編譯好的sql語句的集合,理解成批處理語句。

  好處:

    ①提高代碼的重用性

    ②簡化操作

    ③減少了編譯次數並且減少了和數據庫服務器的連接次數,提高了效率

  1.創建語法 

1 if OBJECT_ID(N'procName',N'P') is not null
2 drop proc procName
3 create proc /*procedure*/ procName
4 @paramName paramType /*= '默認值' output*/
5 as
6     sql
7 go

  參數帶output則為輸出參數

  2.調用語法。

1 exec 存儲過程名(實參列表);

  3.刪除存儲過程

1 drop proc /*procedure*/ 存儲過程名;

  4.查看存儲過程的信息

1 exec sp_helptext  '存儲過程名';

 

⒉函數

  函數和存儲過程意義和好處都是一樣的。它們的唯一區別就是:

    存儲過程可以沒有返回值,也可以有多個返回值,適合做批量插入數據、批量更新等。

    函數必須有返回值,而且只能有1個,適合做處理數據后返回1個結果。

 

  1.創建語法

    ①標量函數--即返回的結果只是一個標量,通俗的講返回的結果就是一種類型的一個值。

    創建:

1 create function funName(@paramName paramType)
2 returns returnType
3 as
4 begin 
5     sql
6 end
7 go

    調用:

select dbo.函數名(參數列表); 

    ②內聯表值函數--即返回的是一張表數據。

    創建:

1 create function funName(@paramName paramType)
2 returns table
3 as
4     return (select * from Table)
5 go

    調用:

1 select * from funName();

    ③多語句表值函數--即通過多條語句來創建Table類型的數據,由我們自行指定具體的Table類型的結構

    創建:

 1 create function funName()
 2 returns @result table( 
 3     id int,
 4     username varchar(20)
 5     )
 6 as
 7 begin
 8     insert into @result select id,username from Study.dbo.users
 9     return 
10 end
11 go

    調用:

1 select * from funName();

  2.刪除函數

1 drop function 函數名;

  3.查看函數

1 exec sp_helptext '函數名';
1 select definition from sys.all_sql_modules sm
2 
3 inner join sys.all_objects ao on sm.object_id = ao.object_id
4 
5 where name ='functionName'and type ='FN'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM