我创造了这个功能:
CREATE FUNCTION F_Emp_NumEmp
(@NumDe NUMERIC(3))
RETURNS TABLE
AS
RETURN (
SELECT
td.NumDe, NumEm, Nombre
FROM
TDepto td INNER JOIN Temple tem ON (td.NumDe = tem.NumDe)
WHERE
td.NumDe = @NumDe
);
我遇到的问题是我没有找到任何方法在其中执行流控制,我没有找到任何参考。我的意思是,我试图做的是,在调用此函数时,如果引入的参数与任何值都不匹配,则会显示个性化消息。
答案 0 :(得分:1)
与大多数编程语言一样,SQL Server函数也有预定义的签名(参数数量,参数类型,返回类型等)。
如果您想要一个决定流量控制的对象,那么您应该查看存储过程而不是函数。
你创建的函数是一个Inline Table valued function
它根本不具备灵活性,你可以在内联表值函数内做什么,它总会返回一个表,只能有一个Select语句在Inline Table valued function
等内部
如果您正在寻找更灵活的函数类型,那么可以查看Multi Statement Table valued Functions
,在这些函数中,您可以在函数内部使用更复杂的逻辑,并且可以执行更多操作。但是,它仍然是一个函数并且Function Signature
规则适用,因此该函数只能返回特定类型的对象,如果是Multi Statement Table valued Function
,它将是一个表。
就像我之前提到的,如果你正在寻找对象的更多灵活性并试图控制该对象内的执行流程Stored Procedures
是要走的路。根据传递的参数值,您可以调用不同的函数并执行不同的操作等。