1. 程式人生 > >SQL Server中表值函式與標量值函式的比較

SQL Server中表值函式與標量值函式的比較

本文將討論一下SQL Server中表值函式與標量值函式的區別,說到函式,首先和儲存過程作個比較吧,兩者有一個共同點都是預編譯優化後儲存在磁碟中,所以效率要比T-SQL高一點點。值得注意的是,儲存過程可以建立或訪問臨時表,而函式不可以;同時函式不可以修改表中的資料,或呼叫產生副作用的函式,比如rand,newid,getdate(當然這並不是絕對的);但是函式可以作為select 或from或where子句的一部分,而儲存過程不可以。接下來切入正題。

表值函式:返回一張表,比如returns table as ... return select ....

標量值函式:返回當個資料型別的值(除BLOB、遊標、時間戳),比如returns int as ... return @var;

注意一點:呼叫函式的時候必須加上schema,而儲存過程不需要。

相關推薦

SQL Server中表函式標量函式比較

本文將討論一下SQL Server中表值函式與標量值函式的區別,說到函式,首先和儲存過程作個比較吧,兩者有一個共同點都是預編譯優化後儲存在磁碟中,所以效率要比T-SQL高一點點。值得注意的是,儲存過程可以建立或訪問臨時表,而函式不可以;同時函式不可以修改表中的資料,或呼叫產

sql函式標量函式的區別

  //-------------------------------------------------------------------------- 表值函式 表值函式和標量值函式的不同是 表值函式是返回一個Table型別 Table型別相當與一張儲存在記憶體中的一

sql中的表函式標量函式區別用法

通俗來講: 聽名字就知道區別了  表值函式返回的是一張表結果,就和一個select查詢語句一樣,只不過裡面帶入了引數或者很複雜; 標量值函式返回的只是一個值 一 、表值函式又分為行內函數與多語句函式 (1)行內函數就是沒有函式主體表是單個 SELECT。 下面是一個不帶輸

SQLServer 表函式標量函式 定義方式呼叫區別

SQLServer 表值函式與標量值函式 定義方式與呼叫區別 轉載自:http://blog.sina.com.cn/s/blog_648861b901012ay2.html SQLServer 

PCB MS SQL 標量函式函式(CLR) 實現檔案目錄操作 PCB 工程系統 模擬windows域帳號登入

 一.C#寫SQL SERVER(CLR)實現檔案操作  標量函式: 檔案移動 ,複製,檢測檔案存在,寫入新檔案文字,讀取文字,建立目錄,刪除目錄,檢測目錄是否存在 /// <summary> /// 將現有檔案複

資料庫之SQL(Transact-SQL-聚合函式、時間函式標量函式、表函式

我們在SQL查詢中除了數學函式、字串函式外還用很多實用的函式,今天就對聚合函式,時間函式,使用者自定義函式進行梳理。 一、聚合函式 聚合函式又被稱為列函式,即對列資料進行聚合。 常用的聚合函式:  ①、AVG()函式  問題:如何給查詢的結果新增列名? 新

SQL Server 刪除表的默認約束

主鍵約束 sel def unique spa 刪除表 object ogr style 首先查出字段的默認值約束名稱,然後根據默認值約束名稱刪除默認值約束 declare @constraintName varchar(200) select @constra

SQL Server 排序的時候使 null 排在最後

rim create pri lec sel arch 解決方法 not lba 最近遇到一個 SQL Server 排序的問題,以前也沒了解過,然後這次碰到了。 才發現 SQL Server 排序的問題,在指定的排序列中 null 值會默認排在最前面,因為在 SQL Se

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

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

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

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

Yii2.0呼叫sql server儲存過程並獲取返回

1、首先展示建立sql server儲存過程的語句,建立一個簡單的儲存過程,測試用。 1 SET ANSI_NULLS ON 2 GO 3 SET QUOTED_IDENTIFIER ON 4 GO 5 6 CREATE PROCEDURE [dbo].[register_info]

sqlserver中的表函式標量函式

顧名思義:表值函式返回的是表,而標量值函式可以返回基型別 一、表值函式 使用者定義表值函式返回 table 資料型別。對於內聯表值函式,沒有函式主體;表是單個 SELECT 語句的結果集。 以下示例建立了一個內聯表值函式。此函式的輸入引數為客戶(商店)ID,而返回 de

Sql server 計算某一個欄位出現的頻數,總數量

  SELECT YZJCYY,count(*) time FROM [dbo].[I_CheckRecordFirst] where YZJCJG='不通過' GROUP BY YZJCYY GO 其中YZJCYY 是要統計的欄位, where 是條件, count(*) t

SQL SERVER 按時間計算每天某的平均值

在報表需求中,有針對求每天按時間分配資料的平均值,在經過查詢後,找到一種方法,供參考。 1.新建檢視 2.編寫語句 SELECT  TOP (100) PERCENT AVG(dbo.漕盈

莫比烏斯函式尤拉函式的單個的快速求法

直接根據定義求即可,複雜度為(n)−−−√(n) 題目:莫比與尤拉 AC程式 #include<cstdio> #define ll int using namespace std

引用移動建構函式的一點理解

說明:右值引用是c++11中的新特性,本來c++中是有一個左值引用的,引入右值引用後,多了很多概念,再看prime的時候,就覺得似乎讓c++更繁瑣了。偶然在知乎上看到這個話題,於是有了一點理解,遂記錄於此。知乎連結 大象與冰箱 我們還是從大象與冰箱的

SQL SERVER-獲得儲存過程的返回和輸出引數

ALTER PROCEDURE [dbo].[InsertRecord]  (     @name nvarchar(100) ) AS BEGIN          SET NOCOUNT ON;

獲取SQL SERVER delete 觸發器 觸發前的

1、觸發器觸發時:    a、系統自動在記憶體中建立deleted表或者inserted表   b、只讀,不允許修改;觸發器執行完成後,自動刪除 2、inserted表 a、臨時儲存了插入或更新後的記錄行 b、可以從inserted表中檢查插入的資料是否滿足業務需求 c、

拷貝建構函式運算子過載的區別

首先要說明的是,若使用者沒有定義,C++隱式宣告一個複製建構函式和一個賦值運算子(完成按資料成員複製的動作)。二者很像,但是在下邊這點上有很大的不同: 複製建構函式是隻在物件例項化時才會被呼叫,也就是說,在複製建構函式呼叫期間,這個物件處於一個未決狀態(直到複製建構函

C++ 一個demo看懂—拷貝建構函式運算子過載區別

class MyClass { public: MyClass(int i = 0) { cout << i; } MyClass(const MyClass &x) { cout << 2; }