日期:2014-05-18  浏览次数:20499 次

case小问题,散分啦!
原函数:CREATE   FUNCTION   dbo.search(@id     nvarchar(10))
RETURNS   nvarchar(300)
AS
BEGIN
DECLARE   @re   nvarchar(300)
                        SET   @re= ' '      
                  SELECT         @re=@re+ '- '+CAST(Station   as   varchar)
FROM   tableBus
WHERE   Id=@Id     order   by     StationIndex   desc
RETURN(STUFF(@re,1,1, ' '))          
END
现在要根据传入的参数访问不同的表。因函数不支持动态语句,所以只能用case判断@jj的值来选择不同的表,请问这case语句该如何完成   :
CREATE   FUNCTION   dbo.search(@id     nvarchar(10),@jj   nvarchar(20))




------解决方案--------------------
用if @jj= 'tableA '
select @re=@re+ '- '....
else if @jj= 'tableB '
select....
------解决方案--------------------
对,应该用if esle
case函数适合在某一单一的SQL语句中对不同情况某一字段取不同的值,而你要根据不同条件执行不同的SQL,属于分支结构。