存储过程中的更新语句无效

时间:2017-01-27 06:42:00

标签: mysql stored-procedures sqlyog

我在Mysql数据库中有一个存储过程,如下所示:

DELIMITER $$

USE `vboard_75`$$

DROP PROCEDURE IF EXISTS `sp_LongWaitCall`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_LongWaitCall`()

BEGIN


    UPDATE cdr SET cdr.CallStatus='DISCONNECTED',cdr.EndTime=NOW() WHERE cdr.CallStatus='RINGINGIN' 
    AND MINUTE(DATEDIFF(cdr.StartTime,NOW())) >=7;

    DECLARE _StatVal FLOAT;
    DECLARE _DevID INT;
    DECLARE Record_Fetch INT DEFAULT 0;
    DECLARE crsr_Board CURSOR FOR
    SELECT  IFNULL(MAX(SECOND(DATEDIFF(CDR.StartTime, IFNULL(CDR.EndTime, NOW())))), 0) AS LRT,vw_Boards_Ext.boardid
    FROM    vw_Boards_Ext RIGHT OUTER JOIN
                boards ON vw_Boards_Ext.boardid = boards.boardid LEFT OUTER JOIN
                CDR ON vw_Boards_Ext.Ext = CDR.DDI AND 
                STR_TO_DATE(CONCAT(boards.ResetDate,' ',boards.ResetTime),'%m/%d/%Y %H:%i') < CDR.timestamp
    AND CDR.CallStatus='RINGINGIN'
    GROUP BY vw_Boards_Ext.boardid;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET Record_Fetch = 1;
    OPEN crsr_Board;
    FETCH crsr_Board INTO _StatVal, _DevID;
    WHILE Record_Fetch = 0 DO

        UPDATE stat_values AS sv SET sv.StatValue = _StatVal,sv.timestamp= NOW() 
        WHERE sv.itemId = _DevID AND sv.itemType = 'boards' AND sv.StatId = 3;
        FETCH crsr_Board INTO _StatVal, _DevID;

    END WHILE;
    CLOSE crsr_Board;
    DEALLOCATE PREPARE crsr_Board;
END$$

DELIMITER ;    

错误:

  

查询:CREATE DEFINER = root @ localhost程序sp_LongWaitCall()BEGIN update cdr set cdr.CallStatus ='DISCONNECTED',cdr.EndTime = n ...

     

错误代码:1064
  您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在'DECLARE _StatVal FLOAT附近使用正确的语法;       DECLARE _DevID INT;       在第8行DECLARE Record_Fetch INT DEFAULT 0'

     

执行时间:0秒
  转移时间:0秒
  总时间:0.001秒

1 个答案:

答案 0 :(得分:0)

This文档指的是在DECLARECURSORS创建任何HANDLERSBEGIN... END之前的BEGIN... END语句,您正在关注但不在开头UPDATE区块。

This文件澄清了OP发布的问题!

必须在package org.alfresco.repo.action.executer; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Serializable; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipException; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.ParameterDefinitionImpl; import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; import org.alfresco.repo.content.MimetypeMap; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ParameterDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.InvalidAspectException; import org.alfresco.service.cmr.dictionary.InvalidTypeException; import org.alfresco.service.cmr.model.FileExistsException; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentIOException; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.InvalidNodeRefException; import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.InvalidQNameException; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.util.TempFileProvider; import org.alfresco.web.bean.repository.Repository; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; /** * Zip action executor * * @author Davide Taibi */ public class ZipActionExecuter extends ActionExecuterAbstractBase { public static final String NAME = "importzip"; public static final String PARAM_ENCODING = "encoding"; public static final String PARAM_DESTINATION_FOLDER = "destination"; private static final String TEMP_FILE_PREFIX = "alf"; private static final String TEMP_FILE_SUFFIX = ".zip"; /** * The node service */ private NodeService nodeService; /** * The content service */ private ContentService contentService; private MimetypeService mimetypeService; private FileFolderService fileFolderService; /** * Sets the NodeService to use * * @param nodeService The NodeService */ public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } /** * Sets the ContentService to use * * @param contentService The ContentService */ public void setContentService(ContentService contentService) { this.contentService = contentService; } public void setFileFolderService(FileFolderService fileFolderService) { this.fileFolderService = fileFolderService; } public void setMimetypeService(MimetypeService mimetypeService) { this.mimetypeService = mimetypeService; } private void extractFile(ZipFile archive,String mExtractToDir){ String fileName; String destFileName; byte[] buffer = new byte[16384]; mExtractToDir=mExtractToDir+File.separator; try { for ( Enumeration e = archive.getEntries(); e.hasMoreElements(); ) { ZipEntry entry = (ZipEntry)e.nextElement(); if ( ! entry.isDirectory() ) { fileName = entry.getName(); fileName = fileName.replace('/', File.separatorChar); destFileName = mExtractToDir + fileName; File destFile = new File(destFileName); String parent = destFile.getParent(); if ( parent != null ) { File parentFile = new File(parent); if ( ! parentFile.exists() ) parentFile.mkdirs(); } InputStream in = archive.getInputStream(entry); OutputStream out = new FileOutputStream(destFileName); int count; while ( (count = in.read(buffer)) != -1 ) out.write(buffer, 0, count ); in.close(); out.close(); }else{ File newdir = new File( mExtractToDir + entry.getName() ); newdir.mkdir(); } } } catch (ZipException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void deleteDir(File dir){ File elenco=new File(dir.getPath()); for (File file:elenco.listFiles()){ if (file.isFile()) file.delete(); else deleteDir(file); } dir.delete(); } public void executeImpl(Action ruleAction, NodeRef actionedUponNodeRef) { String spaceType; NodeRef parentNodeRef; FileInfo fileInfo; NodeRef nodeRef; if (this.nodeService.exists(actionedUponNodeRef) == true) { ContentReader reader = this.contentService.getReader( actionedUponNodeRef, ContentModel.PROP_CONTENT); if (reader != null) { if (MimetypeMap.MIMETYPE_ZIP.equals(reader.getMimetype())) { File zFile = null; ZipFile zipFile = null; try { spaceType = ContentModel.TYPE_FOLDER.toString(); String dirName = ""+this.nodeService.getProperty(actionedUponNodeRef, ContentModel.PROP_NAME); dirName=dirName.substring(0,dirName.indexOf(".zip")); parentNodeRef = (NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER);// this.nodeService.getRootNode(Repository.getStoreRef()); fileInfo = fileFolderService.create( parentNodeRef, dirName, Repository.resolveToQName(spaceType)); nodeRef = fileInfo.getNodeRef(); zFile = TempFileProvider.createTempFile( TEMP_FILE_PREFIX, TEMP_FILE_SUFFIX); reader.getContent(zFile); zipFile = new ZipFile(zFile, "Cp437"); File tempDir=new File(TempFileProvider.getTempDir().getPath()+File.separator+dirName); if (tempDir.exists()) deleteDir(tempDir); extractFile(zipFile,tempDir.getPath()); importFile(tempDir.getPath(),nodeRef); deleteDir(tempDir); } catch (ContentIOException e) { e.printStackTrace(); } catch (InvalidNodeRefException e) { e.printStackTrace(); } catch (FileExistsException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } } private void importFile(String dir,NodeRef root){ File elenco=new File(dir); for (File file:elenco.listFiles()){ try { if (file.isFile()){ InputStream contentStream = new FileInputStream(file); // assign name String fileName=file.getName(); Map<QName, Serializable> contentProps = new HashMap<QName, Serializable>(); contentProps.put(ContentModel.PROP_NAME, fileName); // create content node ChildAssociationRef association = nodeService .createNode( root, ContentModel.ASSOC_CONTAINS, QName.createQName( NamespaceService.CONTENT_MODEL_PREFIX, fileName), ContentModel.TYPE_CONTENT, contentProps); NodeRef content = association.getChildRef(); // add titled aspect (for Web Client display) Map<QName, Serializable> titledProps = new HashMap<QName, Serializable>(); titledProps.put(ContentModel.PROP_TITLE, fileName); titledProps.put(ContentModel.PROP_DESCRIPTION,fileName); nodeService.addAspect(content, ContentModel.ASPECT_TITLED, titledProps); ContentWriter writer = contentService.getWriter(content, ContentModel.PROP_CONTENT, true); writer.setMimetype(mimetypeService.guessMimetype(file.getAbsolutePath())); writer.setEncoding("Cp437"); writer.putContent(contentStream); }else{ String spaceType = ContentModel.TYPE_FOLDER.toString(); FileInfo fileInfo = fileFolderService.create( root, file.getName(), Repository.resolveToQName(spaceType)); importFile(file.getPath(),fileInfo.getNodeRef()); } } catch (InvalidTypeException e) { e.printStackTrace(); } catch (InvalidAspectException e) { e.printStackTrace(); } catch (InvalidQNameException e) { e.printStackTrace(); } catch (ContentIOException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (InvalidNodeRefException e) { e.printStackTrace(); } catch (FileExistsException e) { e.printStackTrace(); } } } protected void addParameterDefinitions(List<ParameterDefinition> paramList) { paramList.add(new ParameterDefinitionImpl(PARAM_DESTINATION_FOLDER, DataTypeDefinition.NODE_REF, true, getParamDisplayLabel(PARAM_DESTINATION_FOLDER))); paramList.add(new ParameterDefinitionImpl(PARAM_ENCODING, DataTypeDefinition.TEXT, true, getParamDisplayLabel(PARAM_ENCODING))); } } 块的开头声明您的声明,但不能在importzip.title=Import Zip File importzip.description=This Action import zip file into alfresco importzip.aspect-name.display-label=The name of the aspect to apply to the node. 声明下声明声明。

可以在this问题上找到对类似问题的其他参考,即使是相同的解决方案。

希望这有帮助!