【发布时间】:2016-02-29 07:32:28
【问题描述】:
我有一个学生表包含以下参数
[ID] [nvarchar](50) NOT NULL,
[Firsname] [nvarchar](50) NOT NULL,
[Lastname] [nvarchar](50) NOT NULL,
[Melicode] [nchar](10) NOT NULL,
[City] [nvarchar](50) NOT NULL,
[Province] [nvarchar](50) NOT NULL,
[Active] [int] NULL
我想编写一个名为 Show 的表值函数,它有一个参数作为数字。该函数将如下所示
- 如果 @number = 1 ,则返回 Student 表中的所有列
- 如果 @number = 2 ,则仅返回来自 Student 的 City
- 如果 @number = 3 ,则仅返回来自 Student 的省份
我编写了以下 T-SQL,但它仅适用于 (if (@number = 1))。当用户输入@number 为 2 或 3 时,该功能不起作用。谢谢你
Create function Show(@number int)
RETURNS @result TABLE
(
[ID] [nvarchar](50) NOT NULL,
[Firsname] [nvarchar](50) NOT NULL,
[Lastname] [nvarchar](50) NOT NULL,
[Melicode] [nchar](10) NOT NULL,
[City] [nvarchar](50) NOT NULL,
[Province] [nvarchar](50) NOT NULL,
[Active] [int] NULL
)
AS
BEGIN
IF (@number = 1)
INSERT INTO @result SELECT * from Student
IF (@number = 2)
INSERT INTO @result (City) values ((SELECT City from Student))
IF (@number = 3)
INSERT INTO @result (Province) values ((SELECT Province from Student))
RETURN -- @Players (variable only required for Scalar functions)
END
go
select *from dbo.show(1)
【问题讨论】:
-
不起作用?不敢相信。
标签: sql sql-server user-defined-functions