MySql:如何在声明语句之前调用存储过程

时间:2014-09-02 10:22:05

标签: mysql sql stored-procedures mysql-workbench

在声明游标之前我需要调用sp。 sp填充表,然后在此表行中填充游标循环。但是工作台在declare语句之前不允许调用sp或其他任何内容。

create definer=`root`@`%` procedure `usp_tesst`()
begin
declare ordid int;
declare packid int;
declare cstmid int;
declare deltimespanid int;
declare dstrcid int;
declare pcstatus tinyint(1);
declare deliverytime datetime;

declare maxdate datetime;
declare temppackcount int default(0);

    call usp_createtemppackages;

-- it says there is a syntax error in here

    declare crs cursor for 
                select  * from temppackages....

我该怎么称呼这个sp?

2 个答案:

答案 0 :(得分:0)

DECLARE语句必须是存储过程中的第一个。

考虑 - 1)在调用usp_tesst之前调用usp_createtemppackages 2)将usp_createtemppackages功能集成到usp_tesst中3)删除游标并以其他方式迭代表(由于游标有点慢,这可能会提高性能)。

答案 1 :(得分:0)

您可以按照以下方式完成所需:

...
declare maxdate datetime;
declare temppackcount int default(0);

/*call usp_createtemppackages;*/

-- it says there is a syntax error in here
    declare crs cursor for 
                select  * from temppackages....

call usp_createtemppackages;
...

SQL Fiddle demo