【发布时间】:2012-02-24 11:49:39
【问题描述】:
虽然 Stack Overflow 中有很多关于这个问题的问题我无法正确解决,但谁能帮我解决这个问题,假设有两个存储过程,
CREATE PROCEDURE `procOne`(stName varchar(7),fullItemCode varchar(12), fullLedNo varchar(12))
BEGIN
set @x = concat('
SELECT ID, Uprice FROM ',stName,'
where Uprice > 0 and FulItmCode="',fullItemCode,'" and FullLedgerNo = "',fullLedNo,'" order by Dat desc limit 1;
');
PREPARE stmt FROM @x;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
和
CREATE PROCEDURE `prcTwo`()
BEGIN
CREATE TEMPORARY TABLE tmpStore (
ID int(10),
Uprice decimal(18,2)
)
insert into tmpStore exec procOne(@param1, @param2)
select * from tempStore;
DROP TABLE tmpStore;
END
我已经尝试过了,但是在尝试保存 prcTwo 时出现以下错误
ERROR 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
'insert into tmpStore exec procOne 'St_BFG','SCI019', 'BIO-JVS-30' output
sele' at line 9 SQL Statement: CREATE DEFINER=user1@localhost PROCEDURE
prcTwo() BEGIN CREATE TEMPORARY TABLE tmpStore ( ID int(10), Uprice
decimal(18,2) ) insert into tmpStore exec procOne 'St_BFG','SCI019',
'BIO-JVS-30' output select * from tempStore; DROP TABLE tmpStore; END
【问题讨论】:
-
什么不起作用?有错误信息吗?
-
我看不出你为什么需要第二个程序?为什么不直接调用
procOne?此外,目前您还没有procOne期望在prcTwo中定义的所有参数。请进一步详细说明您要执行的操作,以及您遇到的错误或意外结果。 -
ERROR 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 9 行 SQL 语句的“插入到 tmpStore exec procOne 'St_BFG'、'SCI019'、'BIO-JVS-30' 输出选择”附近使用正确的语法:CREATE DEFINER=
user1@localhostPROCEDUREprcTwo() BEGIN CREATE TEMPORARY TABLE tmpStore (ID int(10), Uprice decimal(18,2)) 插入到 tmpStore exec procOne 'St_BFG','SCI019', 'BIO-JVS -30' 输出 select * from tempStore;删除表 tmpStore;结束 -
:@Simon -> 我将从 procOne 传递参数,我将从 procOne 中的另一个表中进行选择。