怎么我的MYSQL无法创建存储过程啊?

csdls8ds9 2012-12-04 11:24:57
在PHPMYADMIN里建的,来个最简单的测试语句,语句为
CREATE PROCEDURE tesdddt()
BEGIN
select * from mmnews;
END;


错误
SQL 查询:

CREATE PROCEDURE tesdddt( ) BEGIN SELECT *
FROM mmnews;


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 '' at line 3
...全文
503 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2012-12-05
  • 打赏
  • 举报
回复
一种观点就是数据库只估数据库做的事,不应该用存储过程来实现逻辑层的东西。 其实在程序代码中构造SQL语句更简单。
wwwwb 2012-12-05
  • 打赏
  • 举报
回复
是这样,呵呵
csdls8ds9 2012-12-05
  • 打赏
  • 举报
回复
感觉好繁琐啊,最后还要select一下,这样的效率不如直接在程序里直接操作SQL快吧?
wwwwb 2012-12-05
  • 打赏
  • 举报
回复
假设BBBB为字符型 DELIMITER $$ DROP PROCEDURE IF EXISTS tesdddt$$ CREATE PROCEDURE tesdddt(asb VARCHAR(10),OUT aa INT) BEGIN SET @asql=CONCAT('select count(id) into @aa from aaaa where bbbb=\'',asb,'\''); PREPARE stml FROM @asql; EXECUTE stml; SET aa=@aa; END$$ DELIMITER ; CALL tesdddt('王继山',@ss); SELECT @ss
csdls8ds9 2012-12-05
  • 打赏
  • 举报
回复
引用 3 楼 wwwwb 的回复:
MYSQL命令行下: DELIMITER $$ CREATE PROCEDURE tesdddt() BEGIN select * from mmnews; END$$ DELIMITER ; set @sql=concat('select count(id) from aaaa where bbbb = ',asb); -> set @sql=concat('se……
-------------------------------------------------------------------- asb是个字符串的参数,这个存储过程的目的是,输出这个参数后,求出它的count(id)值 读取方式: call tesdddt('王继山') 然后出来叫王继山的总条数/count(id) ---------- 谢谢
欢乐的尼美 2012-12-05
  • 打赏
  • 举报
回复
mysql> DELIMITER // mysql> CREATE PROCEDURE proc1(OUT s int) -> BEGIN -> SELECT COUNT(*) INTO s FROM user; -> END -> // mysql> DELIMITER ; 这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
wwwwb 2012-12-05
  • 打赏
  • 举报
回复
MYSQL命令行下: DELIMITER $$ CREATE PROCEDURE tesdddt() BEGIN select * from mmnews; END$$ DELIMITER ; set @sql=concat('select count(id) from aaaa where bbbb = ',asb); -> set @sql=concat('select count(id) into @aid from aaaa where bbbb = ',asb); asb是字符串,但为什么查询的时候,它是以INT返回的? 你执行的结果是count(id),当然是INT
csdls8ds9 2012-12-05
  • 打赏
  • 举报
回复
set @sql=concat('select count(id) from aaaa where bbbb = ',asb); asb是字符串,但为什么查询的时候,它是以INT返回的?
csdls8ds9 2012-12-04
  • 打赏
  • 举报
回复
CREATE PROCEDURE tesdddt()<br> BEGIN<br> select * from mmnews; <br> END; <br> csdn没换行,手工加下

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧