delimiter $$
drop procedure if exists ChangeSequence$$
create procedure ChangeSequence
(
_sign int ,
TableName varchar(50)  ,ItemName varchar(50) ,ItemID int , 
SortName  varchar(50) , 
TypeName varchar(50) , TypeValue varchar(50)  )
begin
declare  _SQL varchar(4000);
declare ThisSort int;
declare  PREVID int;
declare NextID int;
declare _Count int; create temporary table _Tab
(
ItemID  int, 
Sort int 
);
set _SQL=concat('INSERT INTO _Tab (',ItemID,Sort,') SELECT ' ,ItemName,SortName,' FROM ',TableName) ;if (TypeName<>'' end TypeValue<>'') 
set _SQL=concat(_SQL,' where ',TypeName,TypeValue);--这里出错
end$$急用,有答案就结贴

解决方案 »

  1.   

    if (TypeName<>'' end TypeValue<>'')  then
    set _SQL=concat(_SQL,' where ',TypeName,TypeValue);--这里出错 
    end if;
    end$$
      

  2.   

    delimiter $$
    drop procedure if exists ChangeSequence$$
    create procedure ChangeSequence
    (
    _sign int ,
    TableName varchar(50) ,ItemName varchar(50) ,ItemID int ,  
    SortName varchar(50) ,  
    TypeName varchar(50) , TypeValue varchar(50) )
    begin
    declare _SQL varchar(4000);
    declare ThisSort int;
    declare PREVID int;
    declare NextID int;
    declare _Count int;  create temporary table _Tab
    (
    ItemID int,  
    Sort int  
    );
    set _SQL=concat('INSERT INTO _Tab (',ItemID,Sort,') SELECT ' ,ItemName,SortName,' FROM ',TableName) ;if (TypeName<>'' end TypeValue<>'')  then--少了THEN
    set _SQL=concat(_SQL,' where ',TypeName,TypeValue);--这里出错 
    end$$
      

  3.   

    end->and?
    DELIMITER $$
    DROP PROCEDURE IF EXISTS ChangeSequence$$
    CREATE PROCEDURE ChangeSequence
    (
    _sign INT ,
    TableName VARCHAR(50) ,ItemName VARCHAR(50) ,ItemID INT ,  
    SortName VARCHAR(50) ,  
    TypeName VARCHAR(50) , TypeValue VARCHAR(50) )
    BEGIN
    DECLARE _SQL VARCHAR(4000);
    DECLARE ThisSort INT;
    DECLARE PREVID INT;
    DECLARE NextID INT;
    DECLARE _Count INT;  CREATE TEMPORARY TABLE _Tab
    (
    ItemID INT,  
    Sort INT  
    );
    SET _SQL=CONCAT('INSERT INTO _Tab (',ItemID,Sort,') SELECT ' ,ItemName,SortName,' FROM ',TableName) ;IF (TypeName<>'' AND TypeValue<>'') THEN
    SET _SQL=CONCAT(_SQL,' where ',TypeName,TypeValue);
    END IF;
    END$$