CREATE PROCEDURE sp_GetTypeList 
@fdClass varchar(4),
@fdTypeNo varchar(10),
@condition varchar(200) 
AS
Begin --加上Begin
  DECLARE @selectText varchar(100)
  SET @selectText='SELECT * FROM tbType WHERE fdClass='+@fdClass  --改为fdClass='+@fdClass  IF LEN(@fdTypeNo)>0
  BEGIN
    SET @selectText = @selectText + 'AND fdTypeNo=' + @fdTypeNo
  END --去掉BEGIN  IF LEN(@condition) > 0
  BEGIN
    SET @selectText = @selectText + 'AND' + @condition
  END --去掉BEGIN  SET @selectText = @selectText + 'ORDER BY fdOrderNo'  EXEC(@selectText)
End --加上End
GO

解决方案 »

  1.   


    还可以简写一下
    CREATE PROCEDURE sp_GetTypeList 
    @fdClass varchar(4),
    @fdTypeNo varchar(10),
    @condition varchar(200) 
    AS
    Begin --加上Begin
      DECLARE @selectText varchar(100)
      SET @selectText='SELECT * FROM tbType WHERE fdClass='+@fdClass  --改为fdClass='+@fdClass  IF LEN(@fdTypeNo)>0 --去掉Begin End
        SET @selectText = @selectText + 'AND fdTypeNo=' + @fdTypeNo  IF LEN(@condition) > 0 --去掉Begin End
        SET @selectText = @selectText + 'AND' + @condition  SET @selectText = @selectText + 'ORDER BY fdOrderNo'  EXEC(@selectText)
    End --加上End
    GO
      

  2.   

    不行啊,加上后就成了“END”附近有错了!
      

  3.   

    又有新问题了!设定@fdClass为'LV',可这时@selectText就成了'SELECT * FROM tbType WHERE fdClass=LV ORDER BY fdOrderNo '
    这里会提示列名"LV"无效,在SQL存储过程里应该怎么给字符串中加单引号啊!
      

  4.   

    SET @selectText='SELECT * FROM tbType WHERE fdClass='+@fdClass 
    改为SET @selectText='SELECT * FROM tbType WHERE fdClass='''+@fdClass+''''