【发布时间】:2011-02-08 03:59:38
【问题描述】:
我从以前的开发人员那里接手了一些代码,并且遇到了这个调用多个 SQL 函数的 SQL 语句。如您所见,select 语句中的函数调用将参数传递给函数。 SQL 语句如何知道用什么值替换变量?对于下面的示例,查询引擎如何知道在调用时用什么替换 nDeptID,fn_SelDeptName_DeptID(nDeptID)
nDeptID是表Note中的一列。
选择语句:
SELECT nCustomerID AS [Customer ID],
nJobID AS [Job ID],
dbo.fn_SelDeptName_DeptID(nDeptID) AS Department,
nJobTaskID AS JobTaskID,
dbo.fn_SelDeptTaskDesc_OpenTask(nJobID, nJobTaskID) AS Task,
nStandardNoteID AS StandardNoteID,
dbo.fn_SelNoteTypeDesc(nNoteID) AS [Note Type],
dbo.fn_SelGPAStandardNote(nStandardNoteID) AS [Standard Note],
nEntryDate AS [Entry Date],
nUserName as [Added By],
nType AS Type,
nNote AS Note FROM Note
WHERE nJobID = 844261
ORDER BY nJobID, Task, [Entry Date]
=======================
Function fn_SelDeptName_DeptID:
ALTER FUNCTION [dbo].[fn_SelDeptName_DeptID] (@iDeptID int)
RETURNS varchar(25)
-- Used by DataCollection for Job Tracking
-- if the Deptartment isnt found return an empty string
BEGIN
-- Return the Department name for the given DeptID.
DECLARE @strDeptName varchar(25)
IF @iDeptID = 0
SET @strDeptName = ''
ELSE
BEGIN
SET @strDeptName = (SELECT dName FROM Department WHERE dDeptID = @iDeptID)
IF (@strDeptName IS NULL) SET @strDeptName = ''
END
RETURN @strDeptName
END
===========================
提前致谢。
【问题讨论】:
标签: sql-server sql-server-2005 select function