我想创建一个函数并在我的小查询中使用它。我以前没有这样做,我真的不知道这样做。
它和其他语言一样吗? 喜欢
create function testFunction()...
begin
..
..
end
然后例如:
Select testFunction()
它应该有用吗?
CREATE FUNCTION dbo.ISOweek (@DATE datetime)
RETURNS int
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @ISOweek int
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104')
--Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1
--Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)=12) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1
RETURN(@ISOweek)
END;
GO
SET DATEFIRST 1
SELECT dbo.ISOweek(CONVERT(DATETIME,'12/26/2004',101)) AS 'ISO Week'
答案 0 :(得分:2)
是的,SQL函数很容易创建。但您必须了解SQL中的3种不同类型的函数:
1)标量函数:
- 返回单个值
2)基于表格的功能:
- 返回表格
3)聚合函数:
返回一个值(但是通过窗口集循环的函数)。
有一些很好的参考资源可用于开始创建SQL函数: 用户定义标量函数的示例(来自dotnettricks):
--Create function to get emp full name
Create function fnGetEmpFullName
(
@FirstName varchar(50),
@LastName varchar(50)
)
returns varchar(101)
AS
BEGIN
return (Select @FirstName + ' '+ @LastName);
END
Microsoft link中的参考,解释和示例
关于此link2中用户定义函数的信息文章
最后来自SQL Team网站,介绍User Defined Functions
答案 1 :(得分:1)
这有点宽泛,你想要退回一张桌子吗?一个值?.. function
可以做很多不同的事情,示例语法是:
CREATE FUNCTION Schema.FunctionName
(
@InputValue InputValueDataType --Parameters here
)
RETURNS ReturnDataType -- The data type you want to return it
AS
BEGIN
-- Do some things with @InputValue
END
Microsoft Doc HERE它解释了执行此操作的不同方法
然后你可以SELECT * FROM schema.FunctionName (@InputValue)
返回