【发布时间】:2014-06-29 16:31:56
【问题描述】:
我正在将一些存储过程从 Sybase TSQL 转换为 Oracle PL/SQL,我已经遇到了一个我正在努力解决的问题!
下面的代码不会运行:
DECLARE
t INT := 0;
t_error EXCEPTION;
v_line VARCHAR2(100);
BEGIN
SELECT COUNT(*) INTO t FROM user_tables WHERE table_name = UPPER('tbl_BSUK_PriceIssue');
IF t = 1 THEN
EXECUTE IMMEDIATE 'DROP TABLE tbl_BSUK_PriceIssue';
t := 0;
SELECT COUNT(*) INTO t FROM user_tables WHERE table_name = UPPER('tbl_BSUK_PriceIssue');
IF t = 1 THEN
RAISE t_error;
END IF;
END IF;
EXCEPTION
WHEN t_error THEN
v_line := '<<< FAILED DROPPING table tbl_BSUK_PriceIssue >>>';
dbms_output.put_line (v_line);
WHEN OTHERS THEN
v_line := '<<< Unknown Error >>>';
dbms_output.put_line (v_line);
END;
END;
我收到以下错误消息,我做错了什么?!
从第 17 行开始的错误命令 - DECLARE
t INT := 0; t_error 异常; v_line VARCHAR2(100);
开始
SELECT COUNT(*) INTO t FROM user_tables WHERE table_name = UPPER('tbl_BSUK_PriceIssue');
IF t = 1 THEN IMMEDIATE 'DROP TABLE tbl_BSUK_PriceIssue';
t := 0; SELECT COUNT(*) INTO t FROM user_tables WHERE table_name = UPPER('tbl_BSUK_PriceIssue');如果 t = 1 那么 提高 t_error;万一;如果结束;当 t_error THEN v_line := '>>'; dbms_output.put_line (v_line);什么时候 其他人然后 v_line := '>>'; dbms_output.put_line (v_line);结尾; 结尾;错误报告 - ORA-06550:第 30 行,第 1 列:PLS-00103:遇到符号“END” 06550. 00000 - “第 %s 行,第 %s 列:\n%s” *原因:通常是 PL/SQL 编译错误。 *行动:
我实际上是在尝试用 PL/SQL 版本替换以下 TSQL:
-- Create temp table for relevant trev_id's
IF OBJECT_ID('dbo.tbl_BSUK_PriceIssue') IS NOT NULL
BEGIN
DROP TABLE dbo.tbl_BSUK_PriceIssue
IF OBJECT_ID('dbo.tbl_BSUK_PriceIssue') IS NOT NULL
PRINT '<<< FAILED DROPPING TABLE dbo.tbl_BSUK_PriceIssue >>>'
ELSE
PRINT '<<< DROPPED TABLE dbo.tbl_BSUK_PriceIssue >>>'
END
go
【问题讨论】:
-
你是通过sqlplus执行的吗?
-
我正在使用 SQL Developer。