PLS-00103 在 PL/SQL Developer 中发生错误

29 浏览
0 Comments

PLS-00103 在 PL/SQL Developer 中发生错误

注意:在使用Oracle SQL Developer时,我没有遇到这个问题。但这里不允许使用这个程序。所以我必须找到一种在PL/SQL Developer中解决这个问题的方法。

当尝试使用PL/SQL Developer(PL/SQL Developer - 这个程序)动态删除表并使用创建语句创建新表时,我一直遇到以下错误:

PLS-00103: 遇到符号"/",符号"/"被忽略PLSQL。

这是由于动态SQL末尾的"/"导致的。

如果我从末尾删除"/",我会收到错误:

遇到符号"CREATE"。

在PL/SQL Developer中解决这个错误的最佳方法是什么?

谢谢:

DECLARE
    VE_TABLENOTEXISTS EXCEPTION;
    PRAGMA EXCEPTION_INIT(VE_TABLENOTEXISTS, -942);
    
    PROCEDURE DROPTABLE(PIS_TABLENAME IN VARCHAR2) IS
        VS_DYNAMICDROPTABLESQL VARCHAR2(1024);
    BEGIN
        VS_DYNAMICDROPTABLESQL := 'DROP TABLE ' || PIS_TABLENAME;
        EXECUTE IMMEDIATE VS_DYNAMICDROPTABLESQL;
    EXCEPTION
        WHEN VE_TABLENOTEXISTS THEN
            DBMS_OUTPUT.PUT_LINE(PIS_TABLENAME || ' 不存在,跳过...');
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE(SQLERRM);
        RAISE;
    END DROPTABLE;
    
BEGIN
    DROPTABLE('foo.foo_table');
END DROPTABLE;
/
CREATE TABLE foo.foo_table AS
(
    SELECT STUFF, MORE_STUFF FROM not_foo_table
);
SELECT * FROM foo.foo_table;

0
0 Comments

PLS-00103在PL/SQL Developer中出现的错误是由于空格导致的。解决方法是在"/"之前移除空格。

原文中提到,作者尝试按照帖子中的方式编译存储过程时,遇到了相同的错误。但是,如果在"/"之前移除空格,它就能正常工作了,就好像它不识别"/"一样。

因此,建议更改以下代码:

END DROPTABLE;
   /

更改为:

END DROPTABLE;
/

原文中还提到,作者从未在SQL中使用过空格,因为这可能会导致问题。

0