delimiter //
CREATE PROCEDURE proc_s_txm
(
    IN                p_txm             VARCHAR(16),           -- 条形码
    OUT                x_txmlb             VARCHAR(1),            -- 条码类别(1-整机条码; 2-PKG条码; 3-部件条码; 4-模块条码)
    OUT                x_zjmc             VARCHAR(8),            -- 整机名称(1)
    OUT         nRc             INT,                   -- 返回码(0-成功)
    OUT         sMsg             VARCHAR(60)            -- 返回信息
    
)
BEGIN
  declare   v_zjmc varchar(8);
  declare   num           int;
  
  if length(p_txm)=16 then
    set v_zjmc=substr(p_txm,1,8);
    select count(*) into num from c_cpmc where scpmc=v_zjmc;
    if num=1 then
      set x_txmlb='1';
      set x_zjmc=v_zjmc;
      set nRc=0;
      set sMsg="成功";
    else
      set nRc=1;
      set sMsg="错误";
      return;
    end if;
  end if;END;
//
第一次用MYSQL写存储过程,上面这个一大堆问你,怎么都通不过

解决方案 »

  1.   

    去掉
         return; 
      

  2.   

    错误如下:
    错误代码: 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare   num           int; 
       
      if length(p_txm)=16 then 
        set v_zjmc=' at line 1
    (耗费 16 ms)
      

  3.   


    delimiter //
    CREATE PROCEDURE proc_s_txm
    (
        IN                p_txm             VARCHAR(16),           -- 条形码
        OUT                x_txmlb             VARCHAR(1),            -- 条码类别(1-整机条码; 2-PKG条码; 3-部件条码; 4-模块条码)
        OUT                x_zjmc             VARCHAR(8),            -- 整机名称(1)
        OUT         nRc             INT,                   -- 返回码(0-成功)
        OUT         sMsg             VARCHAR(60)            -- 返回信息
        
    )
    BEGIN
      declare   v_zjmc varchar(8);
      declare   num           int;
      
      if length(p_txm)=16 then
        set v_zjmc=substr(p_txm,1,8);
        select count(*) into num from c_cpmc where scpmc=v_zjmc;
        if num=1 then
          set x_txmlb='1';
          set x_zjmc=v_zjmc;
          set nRc=0;
          set sMsg="成功";
        else
          set nRc=1;
          set sMsg="错误";
          -- return;
        end if;
      end if;END;
    //(0 row(s)affected)
    (0 ms taken)