当前我正在将Sybase存储过程迁移到Oracle。一旦我在Oracle中迁移了SP并调试了SP,它就抛出了多个语法错误。将Sybase存储过程转换为Oracle时出现编译时错误
目前我被困在一个SP中,我有一种情况使用一个选择语句。
CREATE OR REPLACE PROCEDURE proc1
(var1 IN VARCHAR2 DEFAULT NULL ,
var2 IN NUMBER DEFAULT NULL)
AS
BEGIN
Select
(SELECT display_value
FROM table1) AS COLONE,
CASE a.someColumn
WHEN 0 THEN NULL
ELSE CAST(CAST(a.someColumnAS VARCHAR2(8)) AS DATE)
END someColumn,
(SELECT col1
FROM someTable
WHERE TabCod = 'STATUS'
AND LinCod = a.col) COLTWO,
(SELECT DESCRIPTION
FROM table
WHERE column = CAST(a.col AS NUMBER(18))
AND inactive_dt IS NULL) ColThree,
(SELECT LinVal
FROM table
WHERE TabCod = 'EXTCOLTR'
AND LinCod = a.column) ColFour,
a.SeqIdentifier ,
c.NAME
FROM FirstTable a,
SecondTable b,
ThirdTable c
WHERE a.CustAccount = var1
AND a.SeqIdentifier = var2
AND b.CustAccount = a.CustAccount
AND b.SeqIdentifier = a.SeqIdentifier
AND c.CustAccount = a.CustAccount
AND c.SeqIdentifier = a.SeqIdentifier
GROUP BY a.CustAccount,a.SeqIdentifier,a.Clo1,a.Col2,a.Col3,a.Col4,a.Col5,c.NAME;
END proc1;
我已经解决了,除了一个错误,是后BEGIN陆续因一个select语句几乎所有的错误。
如何解决此错误?
您还没有包括你的错误。你在第一个'cast()'的'AS'之前缺少一个空格,开始时,你的两个参数都被称为'var1',但不知道编辑过程中会发生什么,以隐藏真实的表名等。错误堆栈通常指向错误所在的行和字符编号 - 它并不总是有帮助,但它是一个很好的起点。 –
你必须选择你的查询INTO东西 – thatjeffsmith
错误是错误(10,3):PL/SQL:SQL语句被忽略。 –