>데이터 베이스 >MySQL 튜토리얼 >mysql写存储过程有关问题

mysql写存储过程有关问题

WBOY
WBOY원래의
2016-06-07 16:23:431506검색

mysql写存储过程问题 我想调用mysql存储过程建表,表名通过in参数来传进。 CREATE PROCEDURE friendList (in tname varchar(20)) BEGIN SET @sqlstr =CONCAT('CREATE TABLE if not exists ', tname, '( userid int unsigned, phone VARCHAR(20) NOT NULL, nam

mysql写存储过程问题
我想调用mysql存储过程建表,表名通过in参数来传进。
CREATE PROCEDURE friendList (in tname varchar(20))
BEGIN
   SET @sqlstr =CONCAT('CREATE TABLE if not exists ',
   tname,
         '(
         userid int unsigned,
         phone VARCHAR(20) NOT NULL,
  name VARCHAR(30) NOT NULL,
  birth int,
  nick VARCHAR(15),
  impression varchar(50)
  )ENGINE=InnoDB  DEFAULT CHARSET=utf8') ;
  prepare stmt from @sqlstr;
  execute stmt;
END;

在windows 的cmd下执行一直报错。 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
原来,在cmd下执行的mysql,其;相当于commit,所以会一直报这个错。
应更改语句结束符号,本实例将语句结束符更改为“//”。

于是:
delimiter //
CREATE PROCEDURE friendList (in tname varchar(20))
BEGIN
   SET @sqlstr =CONCAT('CREATE TABLE if not exists ',
   tname,
         '(
         userid int unsigned,
         phone VARCHAR(20) NOT NULL,
  name VARCHAR(30) NOT NULL,
  birth int,
  nick VARCHAR(15),
  impression varchar(50)
  )ENGINE=InnoDB  DEFAULT CHARSET=utf8') ;
  prepare stmt from @sqlstr;
  execute stmt;
END;
//


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.