【发布时间】:2011-05-16 11:20:46
【问题描述】:
我正在将我正在维护的一些软件中的存储过程从SQL Server SQL转换为Informix SQL,问题很多。
基本上我会逐行转换每个部分,直到全部转换完毕。
我有以下CREATE PROCEDURE:
CREATE PROCEDURE ifxdbase:dc_buildSP (WorkID INT, CompNo smallint)
CREATE TEMP TABLE Items
(
Code smallint,
Qty int,
Total int
);
INSERT INTO Items
SELECT
tblDetails.code,
tblDetails.quantity,
tblHead.quantity
FROM
tblHead
INNER JOIN tblDetails ON (tblDetails.compno = tblDetails.compno AND tblDetails.id_num = tblHead.id_num)
WHERE tblHead.compno = CompNo AND tblHead.id_num = WorkID;
--ORDER BY tblDetails.code;
DROP TABLE Items;
END PROCEDURE
就目前而言,这可以正常工作,但是当我取消注释 --ORDER BY tblDetails.seqno; 行(并从上一行中删除分号)时,我收到“-201 A syntax error has occurred”错误。
基本上tblHead 是一系列订单标题,tblDetails 是每个订单详细信息的表格。选择和加入数据工作正常,尝试排序失败。
排序应该适用于原始 SELECT、IIRC 中的任何内容,所以我看不出有什么问题,在这里...
【问题讨论】:
-
往表中插入数据为什么需要order by?
-
问题不是存储过程,问题是在 INSERT INTO ....SELECT 构造中不允许使用 ORDER BY 子句
标签: sql stored-procedures informix