我用mysql_query 执行建表,插入都没问题,我想问下mysql_query 怎么执行多行的procedure.我执行第一行delimiter //这里就出错,我是在VC下面执行想建一个procedure,不知道怎么办.请教在家有什么办法

解决方案 »

  1.   

    楼主的表达很混乱哦。VC下面执行想建一个--是想执行还是想建请教在家有什么办法--是大家?还是你要在家用?是这个吧 DELIMITER $$
      

  2.   

    delimiter // strSQL = "create procedure sp_getundefinedcode(in AID char(8),out retCode int) proc: begin DECLARE v_workercode varchar(8);DECLARE v_stationcode varchar(8);DECLARE v_sitecode varchar(8);DECLARE v_eventcode varchar(8);DECLARE v_type char(2);SELECT sitecode INTO v_sitecode FROM TBL_SITE WHERE sitecode = AID;if !isnull(v_sitecode) then begin set retCode = 1;leave proc;end; end if;SELECT eventcode INTO v_eventcode FROM TBL_EVENT WHERE eventcode = AID;if !isnull(v_eventcode) then begin set retCode = 2;leave proc;end;end if;SELECT workercode INTO v_workercode FROM TBL_WORKER WHERE workercode = AID;if !isnull(v_workercode) then begin\
    set retCode = 3;leave proc;end;end if;SELECT stationcode INTO v_stationcode FROM TBL_STATION WHERE stationcode = AID;\
    if !isnull(v_stationcode) then begin set retCode = 4;leave proc;end;end if;set retCode = 0;end;// delimiter ;";
    if(mysql_query(&mysql,(char*)(LPCTSTR)strSQL))
    {
    MessageBox(mysql_error(&mysql));
    return FALSE;
    }
    错误:You have an error in your syntax:check the manual that corresponds to your mysql server version for the right syntax to use near 'delimiter // create procedure sq_getundefinedcode(in ALD char(8),out retCode int' at line 1请这位仁兄帮忙解决一下,先谢过!
      

  3.   

    不好意思, 有误.是
       strSQL   =   "delimiter   // create   procedure   sp_getundefinedcode(in   AID   char(8),out   retCode   int)   proc:   begin   DECLARE   v_workercode   varchar(8);DECLARE   v_stationcode   varchar(8);DECLARE   v_sitecode   varchar(8);DECLARE   v_eventcode   varchar(8);DECLARE   v_type   char(2);SELECT   sitecode   INTO   v_sitecode   FROM   TBL_SITE   WHERE   sitecode   =   AID;if   !isnull(v_sitecode)   then   begin   set   retCode   =   1;leave   proc;end;   end   if;SELECT   eventcode   INTO   v_eventcode   FROM   TBL_EVENT   WHERE   eventcode   =   AID;if   !isnull(v_eventcode)   then   begin   set   retCode   =   2;leave   proc;end;end   if;SELECT   workercode   INTO   v_workercode   FROM   TBL_WORKER   WHERE   workercode   =   AID;if   !isnull(v_workercode)   then   begin\ 
    set   retCode   =   3;leave   proc;end;end   if;SELECT   stationcode   INTO   v_stationcode   FROM   TBL_STATION   WHERE   stationcode   =   AID;\ 
    if   !isnull(v_stationcode)   then   begin   set   retCode   =   4;leave   proc;end;end   if;set   retCode   =   0;end;//   delimiter   ;"; 
    if(mysql_query(&mysql,(char*)(LPCTSTR)strSQL)) 

    MessageBox(mysql_error(&mysql)); 
    return   FALSE; 

    错误:You   have   an   error   in   your   syntax:check   the   manual   that   corresponds   to   your   mysql   server   version   for   the   right   syntax   to   use   near   'delimiter   //   create   procedure   sq_getundefinedcode(in   ALD   char(8),out   retCode   int'   at   line   1 请这位仁兄帮忙解决一下,先谢过!
      

  4.   

    没试过这样子建存储过程,都是直接用数据库建出来的。这样子一行里还有begin end的好像是不行的,在mysql里肯定不通过,感觉上begin和后面内容的那个间隔是个回车,用空格可能不能代替。
      

  5.   

    我测试了一下,貌似delimiter //之后的东西是不能和这个放在一行的。 你为什么要用VC来建存储过程而不直接建
      

  6.   

    在右侧Schemata列表里点击右键---Create New Procedure / Function