DROP   TABLE   IF   EXISTS   `pyk`;   
  CREATE   TABLE   `pyk`   (   
      `PY`   varchar(1)    ,   
      `HZ1`   int  ,
      `HZ2`   int      
  ) ;------------------------------------------------------
delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
BEGIN
DECLARE hz_code int;
DECLARE hz_py char;
SET hz_code = ord(substring(s,1,1))*256+ord(substring(s,2,1))-65536 ;
select py into hz_py from pyk where hz_code>=pyk.hz1 and hz_code<=pyk
.hz2;                  
RETURN hz_py;
END
//
为什么报错?

解决方案 »

  1.   

    运行没错啊!mysql版本:5.0.45-community-nt
      

  2.   

    错误
    您的 SQL 查询可能有错。如果可能的话,以下会列出 MySQL 服务器的错误输出,这可能对您解决问题有一定的帮助作用。ERROR: 未知的标点符号字符串 @ 11
    STR: //
    SQL: delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    DECLARE hz_code int;delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    DECLARE hz_code int;delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    DECLARE hz_code int;delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    DECLARE hz_code int;delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    DECLARE hz_code int;delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    DECLARE hz_code int;delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    DECLARE hz_code int;
    SQL 查询: delimiter // CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255) BEGIN DECLARE hz_code int; MySQL 返回: #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 'delimiter //CREATE FUNCTION hzcode (s CHAR(255)) RETURNS char(255)
    BEGIN
    D' at line 1 [ 返回 ] 
      

  3.   

    version()  
    5.0.45-community-nt 
      

  4.   

    DELIMITER $$DROP FUNCTION IF EXISTS `hzcode`$$CREATE FUNCTION `hzcode`(s CHAR(255)) RETURNS CHAR(255) CHARSET utf8
    BEGIN 
    DECLARE hz_code INT; 
    DECLARE hz_py CHAR; 
    SET hz_code = ORD(SUBSTRING(s,1,1))*256+ORD(SUBSTRING(s,2,1))-65536 ; 
    SELECT py INTO hz_py FROM pyk WHERE hz_code>=pyk.hz1 AND hz_code <=pyk 
    .hz2;                  
    RETURN hz_py; 
        END$$DELIMITER ;
      

  5.   

    错误
    SQL 查询: DELIMITER;MySQL 返回: #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 'DELIMITER' at line 1 我是再phpadmin中执行的 与这个有关系么?
      

  6.   

    mysql> SET GLOBAL log_bin_trust_function_creators = 1;
      

  7.   

    DELIMITER ; 
    加个空格