2011-06-20 38 views
0
CREATE FUNCTION dbo.GetCustomers 
(
    @ZIPCode VARCHAR(255) 
) 
RETURNS TABLE 

AS BEGIN 
SELECT * dbo.GetCustomers 
WHERE dbo.GetCustomers.ZIPCODE = ZIPCode 
RETURN 
END 

我不熟悉语法。请帮忙。函数返回表行

回答

6

这本来是值得猜测的参数@ZIPCode将进入查询作为@ZIPCode

CREATE FUNCTION dbo.GetCustomers 
(
    @ZIPCode VARCHAR(255) 
) 
RETURNS TABLE 

AS 
RETURN (
    SELECT * FROM dbo.Customers 
    WHERE dbo.Customers.ZIPCODE = @ZIPCode 
    ) 
END 

你的第一次尝试WHERE dbo.Customers.ZIPCODE = ZIPCode相同WHERE dbo.Customers.ZIPCODE = dbo.CustomersZIPCode。也就是说,返回所有行

+0

如果您指出了更改的内容,即'ZIPCode' - >'@ ZIPCode',会有帮助。 –

+0

匿名downvote? – gbn

+0

@gbr即时通讯制作一个正则表达式的搜索模式,并与它进行比较。但我唯一的问题是重演它。我会在我的代码上改变它。 – noname

2

试试这个

CREATE FUNCTION dbo.GetCustomers ( 
@ZIPCode VARCHAR(255) 
) 
RETURNS TABLE 
AS return (SELECT * FROM dbo.Customers WHERE dbo.Customers.ZIPCODE = @ZIPCode) 
+0

+1我错过了错误的语法为udf – gbn

+0

有一个原因为什么给函数一个正文。有一些代码。我只需要知道如何使这样的东西像这样RETURNS TABLE AS dbo.Customers – noname

+0

@noname:这是一个“内联表值函数”,只需要一个RETURN。无BEGIN + END身体。 – gbn

0

似乎有不被任何好的理由来创建一个函数来做到这一点,当一个正常的存储过程将这样的伎俩。

CREATE PROCEDURE GetCustomers 
@ZIPCode VARCHAR(255) 

AS 

SELECT * FROM dbo.Customers 
WHERE Customers.ZIPCODE = @ZIPCode