eRror:
MSG156,15级,状态1,第5行 关键字“函数”附近的语法不正确。 MSG 178,15级,州1,第8行 在此上下文中不能使用带有返回值的返回语句。SQL:
IF (NOT EXISTS (SELECT * FROM DBO.TRACKING WHERE CR = 123))
BEGIN
CREATE FUNCTION [dbo].[UDFDate]()
RETURNS DATETIME
AS BEGIN
RETURN CAST('9999-12-31' AS DATETIME)
END
END
AM我不允许在语句中创建一个函数?
IF (NOT EXISTS (SELECT TOP 1 1 FROM DBO.TRACKING WHERE CR = 123))
BEGIN
SELECT CAST('9999-12-31' AS DATETIME)
END
PS:当您只想知道是否存在某个值时,请勿使用“选择 *”。它创建不必要的开销,可以在您只想知道是否存在时带上所有列。
您无法在以这种方式使用语句中创建一个函数,您将获得以下警告
CREATE FUNCTION
必须是批处理中唯一的陈述
您可以通过在此变量中创建变量stor创建创建查询并执行它来做到这一点:
如果存在(从sys.Objects中选择 * object_id = object_id(n'[dbo]。 然后输入(n'fn',n'if',n'tf',n'fs',n'ft'))) Drop函数[DBO]。[计算PliceWithDiscount] 去 创建函数dbo.calculatePriceWithDiscount(@productid int = 10)
返回表Begin
DECLARE @DiscountedPrice decimal(10,2);
SELECT @DiscountedPrice = (SELECT ALLW_UNIT * (2) FROM TMS_TIME_IN_EMPE_ALLW WHERE COMP_CODE='GSS' AND EMPE_ID='00100030793' AND TRNS_DATE='20230715' AND SRL_NO = @ProductID);
RETURN (
SELECT DEPT_CODE, @DiscountedPrice AS Price
FROM TMS_TIME_IN_EMPE_ALLW
WHERE COMP_CODE='GSS' AND EMPE_ID='00100030793' AND TRNS_DATE='20230715' AND SRL_NO = @ProductID
);
端;
Go 授予Select在[计算priceWithDiscount]到hr_role 去