附近有语法错误)'
问题描述:
如何解决语法,我想只执行一个select语句根据用户的输入即@id附近有语法错误)'
Create Procedure employee
@id int,
@year int
AS
SELECT
CASE
WHEN @id = 1
THEN (select a.name, b.roles
from employee a
inner join department b on a.id = b.id
where b.years in (@year)
or b.roles is not null)
ELSE
CASE
WHEN @id = 2
THEN (select a.name, b.dayoff
from employee a
inner join department b on a.id = b.id
where b.years in (@year)
or b.dayoff is not null)
答
想必,你想if
:
Create Procedure employee (
@id int,
@year int
)
AS
BEGIN
IF @id = 1
BEGIN
select a.name, b.roles
from employee a join
department b
ON a.id = b.id
where b.years IN (@year) OR b.roles IS NOT NULL ) ;
END
ELSE if @id = 2
BEGIN
select a.name, b.dayoff
from employee a join
department b
ON a.id = b.id
where b.years IN (@year) OR b.dayoff IS NOT NULL ) ;
END
END;
我不知道你为什么用in
和@year
;这只有在@year
中有一个值时才有效。
答
更改以下行
SELECT CASE WHEN @id = 1 THEN
对此
IF @id = 1 THEN
因为你不能使用CASE
表达这样的,它应该在查询中使用。由于你的代码块应该看起来像
IF @id = 1 THEN
(select a.name, b.roles from employee a
INNER JOIN department b ON a.id = b.id
where b.years IN (@year)
OR b.roles IS NOT NULL )
ELSE
(select a.name, b.dayoff from employee a
INNER JOIN department b ON a.id = b.id
where b.years IN (@year)
OR b.dayoff IS NOT NULL )
谢谢戈登,但替换后,我仍然得到不正确的语法附近THEN。我错过了什么..? –
@kdud。 。 。 Ooops,SQL Server没有'THEN'。我通常在'BEGIN'和'END'之间放置任何语句。 –