大家好,我写了个stored procedure,运行时候一直报错,Error Code: 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 'NULL' at line 1。能不能帮忙看看,我写的表和stored procedure 哪有问题,纠结了几天了,先谢谢大家啦!DELIMITER $$
CREATE DEFINER=`catavolt`@`%` PROCEDURE `sp_create_timesheet`(IN p_TechId varchar(10), IN p_Date varchar(10))
BEGIN
declare w_last_inserted_record integer;
declare w_pIx integer ;
    declare w_update varchar(21845);
    declare w_where varchar(2048);
declare w_sql varchar(21845);
declare w_finished integer;

declare w_P_Num integer;
declare w_Service_WON nvarchar(10);
declare w_Comments nvarchar(200);
declare w_TotalHours decimal(4,2);
    declare w_OT_Code nvarchar(10);
declare w_JobComplete nvarchar(5);


DECLARE cr CURSOR FOR SELECT  `Service_WON`,
    `Comments`,`TotalHours`,`OT_Code`,`JobComplete`

FROM  `cv_vw_newtransactionsumadmin`
WHERE `PersonID` = p_TechId and `OrderDate` = p_Date;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET w_finished = 1;
OPEN cr;
SET SQL_SAFE_UPDATES = 0;DELETE FROM `cv_timesheet`  WHERE `TechName` = p_TechId and `OrderDate` = p_Date ; 
INSERT INTO `cv_timesheet` (`TechName`, `OrderDate`)
SELECT  `PersonID`,`OrderDate`
FROM  `Catavolt`.`cv_vw_newtransactionsumadmin`
where `PersonID` = p_TechId and `OrderDate` = p_Date group by PersonID;
set w_where = concat(' WHERE TechName = ''', p_TechId, ' and OrderDate = ''', p_Date, ''''); 
  

    set w_update = ' ';
set w_pIx = 1;
    set w_finished = 0;
    get_details: loop
FETCH cr INTO w_Service_WON, w_Comments, w_TotalHours, w_OT_Code,w_JobComplete;  -- , w_Warehouse 
if (w_finished = 1 or w_pIx > 10) then
leave get_details;
end if;
                    
set w_update = concat(w_update, '`P_Num', w_pIx, '` = ', w_pIx, ', '); 
set w_update = concat(w_update, '`WONo', w_pIx, '` = ''', w_Service_WON, ''', ');
set w_update = concat(w_update, '`Description', w_pIx,  '` = ''', w_Comments, ''', '); 
set w_update = concat(w_update, '`Hours', w_pIx, '` = ', w_TotalHours, ' , ');
        set w_update = concat(w_update, '`WorkCodes', w_pIx, '` = ''', w_OT_Code, ''', ');
        set w_update = concat(w_update, '`JC_JNC', w_pIx,  '` = ''',  w_JobComplete, ''', ');    set w_pIx = w_pIx + 1;
    end loop get_details;
    
CLOSE cr;
set w_update = mid(w_update, 1, (length(w_update) - 2));
set w_sql = concat('update `cv_timesheet` set ' , w_update, ' ',  w_where);
SET @s = w_sql;
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; END$$
DELIMITER ;
CREATE TABLE `cv_timesheet` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `P_Num1` int(4) DEFAULT NULL,
  `WONo1` int(11) DEFAULT NULL,
  `WOLineNumber1` varchar(3) DEFAULT NULL,
  `Customer1` varchar(50) DEFAULT NULL,
  `Description1` varchar(1150) DEFAULT NULL,
  `Hours1` decimal(4,2) DEFAULT NULL,
  `WorkCodes1` varchar(10) DEFAULT NULL,
  `JC_JNC1` varchar(5) DEFAULT NULL,
  `WorkCodesNote1` varchar(300) DEFAULT NULL,
  `ProjectCodesNote1` varchar(300) DEFAULT NULL,
  `P_Num2` int(4) DEFAULT NULL,
  `WONo2` int(11) DEFAULT NULL,
  `WOLineNumber2` varchar(3) DEFAULT NULL,
  `Customer2` varchar(50) DEFAULT NULL,
  `Description2` varchar(1150) DEFAULT NULL,
  `Hours2` decimal(4,2) DEFAULT NULL,
  `WorkCodes2` varchar(10) DEFAULT NULL,
  `JC_JNC2` varchar(5) DEFAULT NULL,
  `WorkCodesNote2` varchar(300) DEFAULT NULL,
  `ProjectCodesNote2` varchar(300) DEFAULT NULL,
  `P_Num3` int(4) DEFAULT NULL,
  `WONo3` int(11) DEFAULT NULL,
  `WOLineNumber3` varchar(3) DEFAULT NULL,
  `Customer3` varchar(50) DEFAULT NULL,
  `Description3` varchar(1150) DEFAULT NULL,
  `Hours3` decimal(4,2) DEFAULT NULL,
  `WorkCodes3` varchar(10) DEFAULT NULL,
  `JC_JNC3` varchar(5) DEFAULT NULL,
  `WorkCodesNote3` varchar(300) DEFAULT NULL,
  `ProjectCodesNote3` varchar(300) DEFAULT NULL,
  `P_Num4` int(4) DEFAULT NULL,
  `WONo4` int(11) DEFAULT NULL,
  `WOLineNumber4` varchar(3) DEFAULT NULL,
  `Customer4` varchar(50) DEFAULT NULL,
  `Description4` varchar(1150) DEFAULT NULL,
  `Hours4` decimal(4,2) DEFAULT NULL,
  `WorkCodes4` varchar(10) DEFAULT NULL,
  `JC_JNC4` varchar(5) DEFAULT NULL,
  `WorkCodesNote4` varchar(300) DEFAULT NULL,
  `ProjectCodesNote4` varchar(300) DEFAULT NULL,
  `P_Num5` int(4) DEFAULT NULL,
  `WONo5` int(11) DEFAULT NULL,
  `WOLineNumber5` varchar(3) DEFAULT NULL,
  `Customer5` varchar(50) DEFAULT NULL,
  `Description5` varchar(1150) DEFAULT NULL,
  `Hours5` decimal(4,2) DEFAULT NULL,
  `WorkCodes5` varchar(10) DEFAULT NULL,
  `JC_JNC5` varchar(5) DEFAULT NULL,
  `WorkCodesNote5` varchar(300) DEFAULT NULL,
  `ProjectCodesNote5` varchar(300) DEFAULT NULL,
  `P_Num6` int(4) DEFAULT NULL,
  `WONo6` int(11) DEFAULT NULL,
  `WOLineNumber6` varchar(3) DEFAULT NULL,
  `Customer6` varchar(50) DEFAULT NULL,
  `Description6` varchar(1150) DEFAULT NULL,
  `Hours6` decimal(4,2) DEFAULT NULL,
  `WorkCodes6` varchar(10) DEFAULT NULL,
  `JC_JNC6` varchar(5) DEFAULT NULL,
  `WorkCodesNote6` varchar(300) DEFAULT NULL,
  `ProjectCodesNote6` varchar(300) DEFAULT NULL,
  `P_Num7` int(4) DEFAULT NULL,
  `WONo7` int(11) DEFAULT NULL,
  `WOLineNumber7` varchar(3) DEFAULT NULL,
  `Customer7` varchar(50) DEFAULT NULL,
  `Description7` varchar(1150) DEFAULT NULL,
  `Hours7` decimal(4,2) DEFAULT NULL,
  `WorkCodes7` varchar(10) DEFAULT NULL,
  `JC_JNC7` varchar(5) DEFAULT NULL,
  `WorkCodesNote7` varchar(300) DEFAULT NULL,
  `ProjectCodesNote7` varchar(300) DEFAULT NULL,
  `P_Num8` int(4) DEFAULT NULL,
  `WONo8` int(11) DEFAULT NULL,
  `WOLineNumber8` varchar(3) DEFAULT NULL,
  `Customer8` varchar(50) DEFAULT NULL,
  `Description8` varchar(1150) DEFAULT NULL,
  `Hours8` decimal(4,2) DEFAULT NULL,
  `WorkCodes8` varchar(10) DEFAULT NULL,
  `JC_JNC8` varchar(5) DEFAULT NULL,
  `WorkCodesNote8` varchar(300) DEFAULT NULL,
  `ProjectCodesNote8` varchar(300) DEFAULT NULL,
  `P_Num9` int(4) DEFAULT NULL,
  `WONo9` int(11) DEFAULT NULL,
  `WOLineNumber9` varchar(3) DEFAULT NULL,
  `Customer9` varchar(50) DEFAULT NULL,
  `Description9` varchar(1150) DEFAULT NULL,
  `Hours9` decimal(4,2) DEFAULT NULL,
  `WorkCodes9` varchar(10) DEFAULT NULL,
  `JC_JNC9` varchar(5) DEFAULT NULL,
  `WorkCodesNote9` varchar(300) DEFAULT NULL,
  `ProjectCodesNote9` varchar(300) DEFAULT NULL,
  `P_Num10` int(4) DEFAULT NULL,
  `WONo10` int(11) DEFAULT NULL,
  `WOLineNumber10` varchar(3) DEFAULT NULL,
  `Customer10` varchar(50) DEFAULT NULL,
  `Description10` varchar(1150) DEFAULT NULL,
  `Hours10` decimal(4,2) DEFAULT NULL,
  `WorkCodes10` varchar(10) DEFAULT NULL,
  `JC_JNC10` varchar(5) DEFAULT NULL,
  `WorkCodesNote10` varchar(300) DEFAULT NULL,
  `ProjectCodesNote10` varchar(300) DEFAULT NULL,
  `TechName` varchar(50) NOT NULL,
  `OrderDate` date NOT NULL,
  `Signature` blob,
  `TotalHours` decimal(4,2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;