Powerdesigner mysql 创建存储过程

sz_free_bird 2013-08-16 08:35:09
在PD中定义如下存储过程:

create procedure %PROC%
(IN p1 int,in p2 varchar(32))
insert into Table_1 values(p1,p2)

生成如下脚本

/*==============================================================*/
/* Database name: MySampleDB */
/* DBMS name: MySQL 5.0 */
/* Created on: 2013/8/16 20:20:20 */
/*==============================================================*/


drop database if exists MySampleDB;

/*==============================================================*/
/* Database: MySampleDB */
/*==============================================================*/
create database MySampleDB;

use MySampleDB;

/*==============================================================*/
/* Table: Table_1 */
/*==============================================================*/
create table Table_1
(
Column_1 int not null,
Column_2 varchar(32) not null,
primary key (Column_1)
);


create procedure Procedure_1
(IN p1 int,in p2 varchar(32))
insert into Table_1 values(p1,p2);



大家好!上面的代码是用PD创建一张表和一个存储过程,很简单,只是是为了说明我的问题。上图生成的语句能在PD中正常生成数据库。
问题是这样的:如果存储过程里面是多条语句,按照MySql的语法,如果存储过程中有多条语句,那么就必须用BEGIN END。语句之后也必须加上;
那存储过程的定义如下:

create procedure %PROC%
(IN p1 int,in p2 varchar(32))
begin
insert into Table_1 values(p1,p2);
insert into Table_1 values(p1,p2);
end


生成的脚本如下:

/*==============================================================*/
/* Database name: MySampleDB */
/* DBMS name: MySQL 5.0 */
/* Created on: 2013/8/16 20:28:31 */
/*==============================================================*/


drop database if exists MySampleDB;

/*==============================================================*/
/* Database: MySampleDB */
/*==============================================================*/
create database MySampleDB;

use MySampleDB;

/*==============================================================*/
/* Table: Table_1 */
/*==============================================================*/
create table Table_1
(
Column_1 int not null,
Column_2 varchar(32) not null,
primary key (Column_1)
);


create procedure Procedure_1
(IN p1 int,in p2 varchar(32))
begin
insert into Table_1 values(p1,p2);
insert into Table_1 values(p1,p2);
end;


在PD中执行是会有异常,异常信息如下
*** Execution of SQL statement failed:
[MySQL][ODBC 5.2(w) Driver][mysqld-5.5.28-0ubuntu0.12.04.3-log]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 4

我猜测是MySql中 DELIMITER 的问题。于是我在存储过程的定义加上 DELIMITER 转义。如下



DELIMITER $$
create procedure %PROC%
(IN p1 int,in p2 varchar(32))
begin
insert into Table_1 values(p1,p2);
insert into Table_1 values(p1,p2);
end$$
DELIMITER ;

生成的脚本如下:

/*==============================================================*/
/* Database name: MySampleDB */
/* DBMS name: MySQL 5.0 */
/* Created on: 2013/8/16 20:36:23 */
/*==============================================================*/


drop database if exists MySampleDB;

/*==============================================================*/
/* Database: MySampleDB */
/*==============================================================*/
create database MySampleDB;

use MySampleDB;

/*==============================================================*/
/* Table: Table_1 */
/*==============================================================*/
create table Table_1
(
Column_1 int not null,
Column_2 varchar(32) not null,
primary key (Column_1)
);


DELIMITER $$
create procedure Procedure_1
(IN p1 int,in p2 varchar(32))
begin
insert into Table_1 values(p1,p2);
insert into Table_1 values(p1,p2);
end$$
DELIMITER ;


但是在PD中执行的时候还是有错误。错误信息如下:
*** Execution of SQL statement failed:
[MySQL][ODBC 5.2(w) Driver][mysqld-5.5.28-0ubuntu0.12.04.3-log]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 $$

求指教,在PD中怎样定义存储过程才能创建成功呢?分不够可以再加。谢谢各位了。
...全文
931 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oo小鱼儿 2013-09-18
  • 打赏
  • 举报
回复
学习一下,PowerDesigner
iihero 2013-09-04
  • 打赏
  • 举报
回复
不要纠结于在PD中创建MySQL存储过程。可以在外部创建试试。
WWWWA 2013-08-20
  • 打赏
  • 举报
回复
貌似不能用PD创建SP,DELIMITER 不是SQL命令

2,596

社区成员

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

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