CREATE   PROCEDURE pr_searchGoods(a varchar,b varchar)
   as
    BEGIN
     DECLARE v_sql varchar(200);
     set v_sql=concat('select * from tb_goods where ',a,'=\',b,'\' and available=1);
     SET sql = v_sql;
     PREPARE sl FROM sql;
     EXECUTE sl;
     DEALLOCATE PREPARE sl;
    END
在SQL2005下没办法运行上面一段脚本,不知该怎么修改。请大家帮忙看看!
这是报的错误信息:
消息 102,级别 15,状态 1,过程 pr_searchGoods,第 1 行
'a' 附近有语法错误。
消息 155,级别 15,状态 2,过程 pr_searchGoods,第 4 行
'varchar2' 不是可以识别的 CURSOR 选项。
消息 102,级别 15,状态 1,过程 pr_searchGoods,第 9 行
'PREPARE' 附近有语法错误。

解决方案 »

  1.   

    最好PRINT 一下,SQL
    语法好像不是MSSQL的
      

  2.   


    CREATE  PROCEDURE pr_searchGoods(@a varchar,@b varchar) 
      as 
        BEGIN 
        DECLARE @v_sql varchar(200); 
        set @v_sql=concat('select * from tb_goods where '''+@a+'''='''+@b+''' and available=1'); 
        SET @sql = @v_sql; 
        PREPARE sl FROM @sql; 
        EXECUTE sl; 
        DEALLOCATE PREPARE sl; 
        END 不知道是不是这个意思,但是sl是什么
      

  3.   

    楼主问的是MYSQL吧。MySQL 中不加@
      

  4.   

    sql server中的局部变量要加@,像函数和存储过程中的参数传递都属于这类,要加@,是指这个吧。