Я взял некоторый код от предыдущего разработчика и наткнулся на этот оператор 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
==========================
Заранее спасибо.