SQL儲存過程呼叫標量值函式,儲存過程呼叫儲存過程
一、存 儲過程呼叫標量值函式
先建一個標量值函式,如
CREATE FUNCTION [dbo].[F_Num]
(
@a nvarchar(50)
)
RETURNS nvarchar(50)
AS
BEGIN
declare @m nvarchar(50)
select @[email protected]+'aad'
return @m
END
接下來
在儲存過程中可以直接如下呼叫:
select Title,Content,(select dbo.F_Num(Content)) as a from tb_News where ID='BH100001'
或者:
declare @char nvarchar(20) set @char=dbo.F_Num('ddddadqqqqq')
二、儲存過程呼叫儲存過程,寫法一般是(個人總結的,不對的請見諒)
1、在被呼叫的儲存過程裡,我個人覺得應該寫一個輸出引數,如:
create PROCEDURE [dbo].[P_GetMaxVersion]
@tablename varchar(50),
@version int output
AS
set @version=2
end
在呼叫儲存過程裡,寫上
declare @Version int
exec P_GetMaxVersion 'BaseClient',@Version output
那@Version就被賦上了值2
2、建立一個臨時表
create proc GetUserName as begin select 'UserName' end Create table #tempTable (userName nvarchar(50)) insert into #tempTable(userName) exec GetUserName select #tempTable
3、第三種方法:宣告一個變數,用exec(@sql)執行(注:這種方法我也沒測試過,我是在網上摘抄的,以備用)
declare @rsql varchar(250)
declare @csql varchar(300)
declare @rc nvarchar(500)
declare @cstucount int
declare @ccount int
set @rsql='(select Classroom_id from EA_RoomTime where zc='[email protected]+' and xq=' [email protected]+' and T'[email protected]+'=''否'') and ClassroomType=''1'''
--exec(@rsql)
set @csql='select @a=sum(teststucount),@b=sum(classcount) from EA_ClassRoom where classroom_id in '
set @[email protected][email protected]
exec sp_executesql @rc,N'@a int output,@b int output',@cstucount output,@ccount output--將exec的結果放入變數中的做法
--select @[email protected]
--select @cstucount
以上純屬是個人的一些感想,也沒認真的測試過,有錯的話,請大家指正。
相關推薦
SQL儲存過程呼叫標量值函式,儲存過程呼叫儲存過程
一、存 儲過程呼叫標量值函式 先建一個標量值函式,如 CREATE FUNCTION [dbo].[F_Num] ( @a nvarchar(50) ) RETURNS nvarchar(50) AS BEGIN declare @m nvarchar(50) selec
SQLServer 表值函式與標量值函式 定義方式與呼叫區別
SQLServer 表值函式與標量值函式 定義方式與呼叫區別 轉載自:http://blog.sina.com.cn/s/blog_648861b901012ay2.html SQLServer
sqlserver自定義函式(標量值函式,表值函式)
在sqlserver中,根據函式返回值形式的不同將使用者自定義的函式分為”標量值函式“和”表值函式“兩種型別。如下圖所示,可以在資料庫中的可程式設計->函式中進行檢視。 標量函式,返回單個值,表值函式返回表資料 1.標量值函式 標量值函式返回一個確定型別的標量值,其
【mybatis】mybatis呼叫sqlserver儲存過程和表值函式
儲存過程和表值函式的區別 最簡單的區別是儲存過程是pr開頭的,而儲存過程是fn開頭的,表值函式返回的是一個表結構的結果。如果mybatis用呼叫儲存過程的方式去呼叫表值函式,就會丟擲以下的異常: exc
SQL 標量值函式的呼叫
呼叫 MS SQL 標量值函式,應該在函式前面加上 "dbo.",否則會報 “不是可以識別的 內建函式名稱”錯誤。例如 DECLARE @WhichDB TINYINT; SELECT @WhichDB = dbo.user_GetWhichDB(1);--看看是哪
sql 將‘1,2,3,4’轉成相應的表,欄位分隔表值函式,一行變多行,
再設計表的時候我們經常遇到這樣的情況,欄位的值為1,2,3,4 等字元隔開的情況,存的是數字,但是顯示的時候是對應的類別,直接上圖,清楚明瞭, 如何想得到 分兩步完成,步驟如下: 第一步先創造 一個表值函式,將1,2,3,4 轉化為 函式是從網上找來的,程式碼如下:
資料庫之SQL(Transact-SQL-聚合函式、時間函式、標量值函式、表值函式)
我們在SQL查詢中除了數學函式、字串函式外還用很多實用的函式,今天就對聚合函式,時間函式,使用者自定義函式進行梳理。 一、聚合函式 聚合函式又被稱為列函式,即對列資料進行聚合。 常用的聚合函式: ①、AVG()函式 問題:如何給查詢的結果新增列名? 新
SQL Server中表值函式與標量值函式的比較
本文將討論一下SQL Server中表值函式與標量值函式的區別,說到函式,首先和儲存過程作個比較吧,兩者有一個共同點都是預編譯優化後儲存在磁碟中,所以效率要比T-SQL高一點點。值得注意的是,儲存過程可以建立或訪問臨時表,而函式不可以;同時函式不可以修改表中的資料,或呼叫產
sql中建標量值函式
1. USE [AirDB_YiZhuang] GO 2.CREATE FUNCTION co2iaqi (@val float) RETURNS int AS BEGIN-- Declare
根據某一指定的表名、列名及列值來向前或向後N條查相關列值的SQL自定義標量值函式
有時需要根據某一指定的列的值來向前或向後N條查相關的列值,那麼用此SQL自定義標量值函式可以取得相關的SQL語句: ALTER FUNCTION GetPreviousNextCodeSql ( @tableName varchar(50), @codeFieldNam
sql 表值函式與標量值函式的區別
//-------------------------------------------------------------------------- 表值函式 表值函式和標量值函式的不同是 表值函式是返回一個Table型別 Table型別相當與一張儲存在記憶體中的一
sql中的表值函式與標量值函式區別與用法
通俗來講: 聽名字就知道區別了 表值函式返回的是一張表結果,就和一個select查詢語句一樣,只不過裡面帶入了引數或者很複雜; 標量值函式返回的只是一個值 一 、表值函式又分為行內函數與多語句函式 (1)行內函數就是沒有函式主體表是單個 SELECT。 下面是一個不帶輸
sqlserver中的表值函式和標量值函式
顧名思義:表值函式返回的是表,而標量值函式可以返回基型別 一、表值函式 使用者定義表值函式返回 table 資料型別。對於內聯表值函式,沒有函式主體;表是單個 SELECT 語句的結果集。 以下示例建立了一個內聯表值函式。此函式的輸入引數為客戶(商店)ID,而返回 de
SQLServer之修改標量值函式
修改標量值函式注意事項 更改先前通過執行 CREATE FUNCTION 語句建立的現有 Transact-SQL 或 CLR 函式,但不更改許可權,也不影響任何相關的函式、儲存過程或觸發器。 不能用 ALTER FUNCTION 將標量值函式更改為表值函式。反之亦然。 不能使用 ALTER FUNCTION
SUM 是SQL語句中的標準求和函式,如果沒有符合條件的記錄,那麼SUM函式會返回NULL。但咱們想返回的是0而不是Null
但多數情況下,我們希望如果沒有符合條件記錄的情況下,我們希望它返回0,而不是NULL,那麼我們可以使用例如下面的方法來處理: SELECT COALESCE(SUM(field1),0) FROM ta
建立標量值函式判斷某個欄位是否包含中文
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author: <Author,,Name> --
試編寫一個函式,實現在順序儲存方式下字串的strcompare(S1,S2)運算
先介紹一下字串的順序儲存字串其實就是一種特殊的線性表,學過線性表後我們知道,線性表有順序儲存和鏈式儲存兩種儲存結構,那麼很容易想到字串也有兩種基本的儲存結構:順序串和鏈式串。其實也沒什麼好說的字串都知道,不就是0個或多個字元構成的有限序列嘛比如 T= “ABCD”順序表也剛
動態呼叫Python的函式,物件方法以及屬性
def do_foo(): print "foo!" def do_bar(): print "bar!" class Print(): def __init__(self): self.x = 1; def
為什麼const物件只能呼叫const成員函式,而不能呼叫非const成員函式?
參考:http://www.cnblogs.com/cplinux/articles/5553716.html http://blog.csdn.net/lanxuezaipiao/article/details/41647333#comments 在c++中,我們可以
分割字串(標量值函式)
資料庫:SQL2005 在專案中有遇到這樣的問題,就是查詢的輸入字串是否包含一個規定格式字串中。 比如說:查詢 1002 是否包含在 '1001,1002,1003' 中。 可以通過很多種方式實現。我這裡使用函式實現。如下: set ANSI_NULLS ON set Q