drop procedure if exists net_disk.p_dir_info;
delimiter$$
# username:用户名(需传入的参数)  path: 目录路径(需传入的参数)
create definer=root@localhost procedure net_disk.p_dir_info(in username varchar(20), in path varchar(255))   
begin
select * from
(
    #找出目录的信息:目录的使用者、路径、目录、创建时间、文件数量、文件大小
    select d.username, d.path, d.dir, d.create_time,
#该目录内的文件的数量
(case isnull(sum(f.count)) when true then 0 else sum(f.count) end) as count,
#目录内的所有文件的总大小
(case isnull(sum(f.size)) when true then 0 else sum(f.size) end) as size
     from t_directories d left join
(select file_parent_path, count(filename) as count, sum(size) as size from  t_files group by file_parent_path) f
on f.file_parent_path=d.path
     where d.username=username and d.path=path 
 )dir order by d.create_time;
 end  
delimiter;
程序总是提醒我delimiter$$这句错误,真是百思不得其解,请知道的兄弟帮帮忙,诚谢!
delimiter$$
。。
delimiter;
定界符的使用没错吧?

解决方案 »

  1.   

    跟空格试试,如:delimiter $$
      

  2.   

    这个delimiter $$早试过了,报错
    非得把
    delimiter$$
    delimiter;
    注释掉才不报错
    不知道是何原因
      

  3.   

    你在什么中执行的? 是MYSQL命令行工具中吗?
      

  4.   

    先直接到MYSQL命令行工具中试一下。
      

  5.   

    在mysql命令端输入代码,mysql命令端认为我输入的代码没有结束,没有运行结果。
       ->  end
       -> delimiter;
       ->
      

  6.   

    end 后加 $$delimiter; 中间加空格。
      

  7.   

    在MySQL-Front中不用delimiter $$........delimiter ;命令,MySQL-Front可以自动识别创建存储过程的语句
    在mysql命令行中,必须以下面的格式输入才正确
    delimiter $$
    CREATE PROCEDURE test8()
    begin
    select * from t_users;
    end $$
    delimiter ;