1. 程式人生 > >SQL Server 函式的使用 Function

SQL Server 函式的使用 Function

SQL中儲存過程和函式的區別?

sql中儲存過程與函式本質上沒區別。只是函式有如:只能返回一個變數的限制。而儲存過程可以返回多個。而函式是可以嵌入在sql中使用的,可以在select中呼叫,而儲存過程不行。執行的本質都一樣。 
     函式限制比較多,比如不能用臨時表,只能用表變數.還有一些函式都不可用等等.而儲存過程的限制相對就比較少 
      1.    一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。 
      2.    對於儲存過程來說可以返回引數,而函式只能返回值或者表物件。 
      3.    儲存過程一般是作為一個獨立的部分來執行(EXEC執行),而函式可以作為查詢語句的一個部分來呼叫(SELECT呼叫),由於函式可以返回一個表物件,因此它可以在查詢語句中位於FROM關鍵字的後面。 
      4.    當儲存過程和函式被執行的時候,SQL Manager會到procedure cache中去取相應的查詢語句,如果在procedure cache裡沒有相應的查詢語句,SQL Manager就會對儲存過程和函式進行編譯。 
      Procedure cache中儲存的是執行計劃 (execution plan) ,當編譯好之後就執行procedure cache中的execution plan,之後SQL SERVER會根據每個execution plan的實際情況來考慮是否要在cache中儲存這個plan,評判的標準一個是這個execution plan可能被使用的頻率;其次是生成這個plan的代價,也就是編譯的耗時。儲存在cache中的plan在下次執行時就不用再編譯了。


create table student
(
	id varchar2(5) primary key,
	name varchar2(20) not null,
	sex char(2) check(sex='男' or sex='女')
)

--向student中插入一條資料,用函式來驗證插入是否正確

create or replace function student_insert_check(f_id in varchar2,f_name in varchar2,sex in varchar2)
return varchar2 
is
begin
if f_id is null then
return('學號不能為空,記錄未成功插入');
end if;
if f_name is null 
return ('姓名不能為空,記錄未成功插入');
end if;
if sex !='男' or sex!='女'
return('性別僅限於男或者女,記錄未成功插入')
end if;
insert into student values(f_id,f_name,sex);
commit; -- SQL控制事務之commit命令用法詳解 :COMMIT命令用於把事務所做的修改儲存到資料庫,它把上一個COMMIT或ROLLBACK命令之後的全部事務都儲存到資料庫。
	return('記錄插入成功');
	end dd;

=================================================================================

 create function average1(@cnum char(20)) --建立一個帶引數的函式
 returns int --返回值為一個int型別的整數
 as
 begin
 declare @aver int  --宣告一個@aver變數
 select @aver=    --查詢這個變數
 (
    --給變數賦值
	select AVG(成績) from xs_kc where 課程號
[email protected]
group by 課程號 ) return @aver --返回變數 end go select dbo.average1(101) --呼叫剛剛建立的函式average1


相關推薦

SQL Server 函式的使用 Function

SQL中儲存過程和函式的區別? sql中儲存過程與函式本質上沒區別。只是函式有如:只能返回一個變數的限制。而儲存過程可以返回多個。而函式是可以嵌入在sql中使用的,可以在select中呼叫,而儲存過程

SQL Server函式——表值函式和標量函式

create table student (  sid int identity primary key,  sname varchar(20),  gender tinyint,  age int ) go insert in

SQL Server 函式大全

SQL Server字串處理函式大全  select語句中只能使用sql函式對欄位進行操作(連結sql server), select 欄位1 from 表1 where 欄位1.IndexOf("雲")=1;這條語句不對的原因是indexof()函式不是sql函式,改成sql對應

sql server 函式根據分隔符號拆分字元

 createFUNCTION [dbo].[Fun_SplitStr]   (       @originalStr      VARCHAR(8000), --要分割的字串       @split varchar(100)  --分隔符號   )   RETURNS

-------------------------SQL SERVER函式將人民幣數字轉換成大寫形式---------------------

CREATE  FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))   RETURNS varchar(100) WITH ENCRYPTION   AS   BEGIN   --版權所有:[email protected

sql server 函式-將多條資料,在一行一列顯示

USE [ChangShaDB] GO /* Object: UserDefinedFunction [dbo].[GetProjectUnit] Script Date: 03/27/2017 15:48:10 */ SET ANSI_NULLS

SQL SERVER中使用者定義標量函式(scalar user defined function)的效能問題

使用者定義函式(UDF)分類       SQL SERVER中的使用者定義函式(User Defined Functions 簡稱UDF)分為標量函式(Scalar-Valued Function)和表值函式(Table-Valued Function)。其中表值函式又分為Inline table-val

SQL Server 自定義函式Function

sql server 自定義函式分為三種類型:標量函式(Scalar Function)、內嵌表值函式(Inline Function)、多宣告表值函式(Multi-Statement Function) 標量函式:標量函式是對單一值操作,返回單一值。 內嵌表值函式:

SQL Server 自定義函數(Function)——參數默認值

指定 SQ binding img 種類 return png begin TP 原文:SQL Server 自定義函數(Function)——參數默認值sql server 自定義函數分為三種類型:標量函數(Scalar Function)、內嵌表值函數(Inline F

SQL Server 字串函式

 在開發T-SQL時,經常會需要對字串進行各種各樣的操作,下面介紹常用的字串函式。 1、獲取字元的ASCII碼 ASCII     ASCII碼是對字元的標準編碼。要獲取字元的ASCII碼就可以通過呼叫ASCII函式來實現。     語法結構: ASCII(espression)   這裡的e

SQL Server排名函式與排名開窗函式

什麼是排名函式?說實話我也不甚清楚,我知道 order by 是排序用的,那麼什麼又是排名函式呢? 接下來看幾個示例就明白了。 首先建立一個表,隨便插入一些資料。 ROW_NUMBER 函式:直接排序,ROW_NUMBER函式是以上升進行直接排序,並且以連續的順序給每一行資料一個唯一的序號。(即排名

SQL Server聚合函式與聚合開窗函式

以下面這個表的資料作為示例。 什麼是聚合函式? 聚合函式:聚合函式就是對一組值進行計算後返回單個值(即分組)。聚合函式在計算時都會忽略空值(null)。 所有的聚合函式均為確定性函式。即任何時候使用一組相同的輸入值呼叫聚合函式執行後的返回值都是相同的,無二義性。 COUNT(統計函式):COUNT

SQL Server自定義字串分割函式——Split

我相信大部分人都碰到過,處理資料的時候,欄位的值是以 ',' (逗號)分隔的形式,所以我也不能避免。 然後我才知道,sql 是沒有類似於 C# 和 Javascript 這種分割字串的方法。( Split ) 所以我自己定義了一個 sql 函式(多宣告表值函式),程式碼如下:

SQL Server ->> 時間函式: EOMONTH, DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETFROMPARTS

原文: SQL Server ->> 時間函式: EOMONTH, DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETFROMPARTS 上面幾個函式都是SQL Server 2012新增的時間函式。  

SQL Server資料庫————模糊查詢和聚合函式

***********模糊查詢*********/ 關鍵字: like (!!!!字串型別) in (,,)  匹配()內的某個具體值(括號裡可以寫多個值) between... and.. 在某兩個值的區間範圍中(前後都包括,小的寫前面,大的寫後面)   *****

SQL Server 效能優化實戰系列(一) SQL Server擴充套件函式的基本概念 使用SQL Server 擴充套件函式進行效能優化 SQL Server Url正則表示式 記憶體常駐 完美解決方案

資料庫伺服器主要用於儲存、查詢、檢索企業內部的資訊,因此需要搭配專用的資料庫系統,對伺服器的相容性、可靠性和穩定性等方面都有很高的要求。        下面是進行籠統的技術點說明,為的是讓大家有一個整體的概念,如果想深入可以逐個擊破;&n

SQL SERVER 查找出不含自增項和計算欄位的自定義函式

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'B_GetTableWithOutCompute' AND user_name(uid) = 'dbo')     DROP FUNCTION B_GetTableWithOu

SQL Server 只讀賬號/只讀登入名可檢視儲存過程及函式許可權

公司為了收緊生產資料庫的登入名,目前我們公司生產資料庫登入名基本賦予了sa賬戶的許可權,這樣做是很危險的,所以領導要求給運維同事授予資料庫只讀查詢的賬號,但同時又需要讓運維同事可檢視儲存過程,因為儲存過程和函式中有很多攔截異常的判斷,當提示報錯內容時,運維同事可以通過報錯的關

SQL Server獲取本月上月本週等函式用法

SQL Server DATEDIFF() 函式----(返回兩個日期之間的時間): SQL Server DATEADD() 函式----(在日期中新增或減去指定的時間間隔) 語法:DATEADD(datepart,number,date) 學習  :  mo

sql server DATEPART() 函式的使用

datepart() 函式是用來返回 指定日期時間的指定日期部分的整數。返回型別為:int 。語法:DATEPART(datepart,date) 其中date是日期、時間。part指其中的一部分。所以這個函式的意思就是取日期中的一部分。 函式的第一引數 datepart是指定應返回的日