当前位置:  开发笔记 > 数据库 > 正文

Oracle PL/SQL脚本中的斜杠字符是错误吗?

如何解决《OraclePL/SQL脚本中的斜杠字符是错误吗?》经验,为你挑选了3个好方法。

我正在为我的公司编写一系列用Oracle PL/SQL编写的SQL脚本.我遇到了一个基本的脚本,底部附近有一个奇怪的斜线.它以这种方式检入CVS.这是一个纯语法错误还是它有一些我不知道的功能.稍微混淆的脚本:

set serveroutput on size 2000;
--PL/SQL block to link ISSN in serial base on a company's ISSN text file

declare
    cursor ItemCursor is
        select issn is2 from web.obfuscated1 where issn is not null
            union
        select eissn is2 from web.obfuscated1 where eissn is not null;

    cursor ItemCursor1(aIS varchar2) is
        select obfuscated1_uid from web.obfuscated1 where group_num is null and issn in (
            select distinct issn from web.obfuscated1 where issn = aIS or eissn = aIS
                union
            select distinct eissn from web.obfuscated1 where issn = aIS or eissn = aIS
        )
            union
        select obfuscated1_uid from web.obfuscated1 where eissn in (
            select distinct issn from web.obfuscated1 where issn = aIS or eissn = aIS
                union
            select distinct eissn from web.obfuscated1 where issn = aIS or eissn = aIS
        );

    cursor ItemCursor2(aIS9 varchar2) is
        select obfuscated1_uid from web.obfuscated1 where issn in (
            select distinct issn from web.obfuscated1 where issn = aIS9 or eissn = aIS9
                union
            select distinct eissn from web.obfuscated1 where issn = aIS9 or eissn = aIS9
        ) and group_num is null;

    agroup      number(8);
    processCount    number(8);

    ------------------------------------------------------
    -- MAIN BLOCK -----------------------------------
    -------------------------------------------------
begin
    processCount := 0;

    agroup := null;
    for itemRec in ItemCursor loop
        agroup := null;
        begin
            select group_num into agroup from web.obfuscated1 where issn in (
                select distinct issn from web.obfuscated1 where issn = itemRec.is2 or eissn = itemRec.is2
                    union
                select distinct eissn from web.obfuscated1 where issn = itemRec.is2 or eissn = itemRec.is2
            ) and group_num is not null and issn is not null and eissn is not null and rownum <= 1;

        exception
            when no_data_found then
                agroup := null;
            when others then
                agroup := null;
        end;

        if agroup is not null then
            for itemRec2 in ItemCursor2(itemRec.is2) loop
                update web.obfuscated1 set group_num = agroup where obfuscated1_uid = itemRec2.obfuscated1_uid;
                commit;
            end loop;
        else
            processCount := processCount + 1;
            for itemRec1 in ItemCursor1(itemRec.is2) loop
                update web.obfuscated1 set group_num = processCount where obfuscated1_uid = itemRec1.obfuscated1_uid;
                commit;
            end loop;
            commit;
        end if;
    end loop;

    dbms_output.put_line('Total record read: ' || processCount);
exception
    when others then
        dbms_output.put_line('ORA' || sqlcode);
        dbms_output.put_line(substr(sqlerrm, 1, 255));
        dbms_output.put_line('ORA- Error during processing ' );
    end;
/
exit;

Eddie Awad.. 21

斜线有一个含义:

执行最近执行的SQL命令或存储在SQL缓冲区中的PL/SQL块.您可以在命令提示符处或多行命令的行号提示处输入斜杠(/).斜杠命令的功能与RUN类似,但不会列出命令.


ibre5041.. 7

使用Oracle时,您可以"混合"三种不同的语法.

SQL

PL/SQL

sqlplus(命令行客户端)

sqlplus可以通过将SQL和PL/SQL语句发送到DB服务器来执行/处理它们.sqlplus命令由sqlplus本身解释.

分号";" 不是SQL语法的一部分,sqlplus将其识别为SQL语句的结尾.而对于PL/SQL,它是语法的一部分,必须明确告诉sqlplus该语句在此结束,并且应该使用斜杠执行.

其他sqlplus命令是"EXIT","DEFINE""VARIABLE""PRINT""SET "(SET ROLE除外).

另一方面,Toad例如在看到空行时识别PL/SQL块的结束.



1> Eddie Awad..:

斜线有一个含义:

执行最近执行的SQL命令或存储在SQL缓冲区中的PL/SQL块.您可以在命令提示符处或多行命令的行号提示处输入斜杠(/).斜杠命令的功能与RUN类似,但不会列出命令.



2> ibre5041..:

使用Oracle时,您可以"混合"三种不同的语法.

SQL

PL/SQL

sqlplus(命令行客户端)

sqlplus可以通过将SQL和PL/SQL语句发送到DB服务器来执行/处理它们.sqlplus命令由sqlplus本身解释.

分号";" 不是SQL语法的一部分,sqlplus将其识别为SQL语句的结尾.而对于PL/SQL,它是语法的一部分,必须明确告诉sqlplus该语句在此结束,并且应该使用斜杠执行.

其他sqlplus命令是"EXIT","DEFINE""VARIABLE""PRINT""SET "(SET ROLE除外).

另一方面,Toad例如在看到空行时识别PL/SQL块的结束.



3> Eric..:

/最后是告诉解释器执行加载的脚本

基本上你键入东西然后键入"/",你刚刚输入的内容将执行

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有