首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SP中with后头是否可以接IF语句

2012-12-29 
SP中with后面是否可以接IF语句问题抽象如下:CREATE PROCEDURE TESTT( @Age int)ASWITH TEST AS( SELECT *

SP中with后面是否可以接IF语句
问题抽象如下:


CREATE PROCEDURE TESTT
(
 @Age int
)
AS
;WITH TEST AS
(
 SELECT * FROM INFO
)

IF @Age<18
BEGIN
 SELECT * FROM TEST WHERE Age<18
END
ELSE IF @Age=18
BEGIN
 SELECT * FROM TEST WHERE Age=18
END
ELSE
SELECT * FROM TEST WHERE Age>18

错误提示:
Incorrect syntax near the keyword 'IF'.
如果不能请提示如何更改,谢谢。
[解决办法]
CREATE PROCEDURE TESTT
(
 @Age int
)
AS
begin
;WITH TEST AS
(
 SELECT * FROM INFO
)
select * from test where age<18 and @age<18
union all
select * from text where age=18 and @age=18
union all
select * from text where age>18 and @age>18
end

[解决办法]

CREATE PROCEDURE TESTT
(
 @Age int
)
AS
 SELECT * into TEST FROM INFO
IF @Age<18
BEGIN
 SELECT * FROM TEST WHERE Age<18
END
ELSE IF @Age=18
BEGIN
 SELECT * FROM TEST WHERE Age=18
END
ELSE
SELECT * FROM TEST WHERE Age>18
drop table TEST
[解决办法]
CREATE PROCEDURE TESTT
(
 @Age int
)
AS
;WITH TEST AS
(
 SELECT * FROM INFO
)
SELECT 
    * 
FROM TEST 
WHERE (Age<18 AND @Age<18) 
    OR (Age=18 AND @Age=18)
    OR (Age>18 AND @Age>18)

热点排行