CREATE FUNCTION GetPayCodeList
(
-- Add the parameters for the function here
@PC varchar(50)
)
RETURNS TABLE
AS
RETURN
( IF @PC = '*'
SELECT DISTINCT ID, Code, Description
FROM tbl
ELSE
SELECT DISTINCT ID, Code, Description
FROM tbl
WHERE Code = @PC
)
答案 0 :(得分:2)
这些列中是否有任何字符和DISTINCT?
作为旁注,您可以将其重写为更简单:
SELECT DISTINCT ID, Code, Description
FROM tbl
WHERE @PC = '*' OR Code = @PC
答案 1 :(得分:1)
你必须写一个多步功能,你不能这样做 内联函数。
CREATE FUNCTION GetPayCodeList
(
-- Add the parameters for the function here
@PC varchar(50)
)
RETURNS @table TABLE (ID int NOT NULL,
... //others fields ) AS
BEGIN
IF @PC = '*'
INSERT @table (SELECT DISTINCT ID, Code, Description
FROM tbl) FROM tbl
ELSE
INSERT @table ( SELECT DISTINCT ID, Code, Description
FROM tbl
WHERE Code = @PC) FROM tbl
RETURN @table
END
答案 2 :(得分:0)
试试这个:
CREATE FUNCTION GetPayCodeList( -- Add the parameters for the function here
@PC varchar(50))
RETURNS @tbl TABLE (
ID int
, Code varchar(50)
, Description varchar(max))
WITH SCHEMABINDING
AS
BEGIN
IF @PC = '*'
SELECT DISTINCT ID, Code, Description
FROM tbl
ELSE
SELECT DISTINCT ID, Code, Description
FROM tbl
WHERE Code = @PC
END