Является ли этот символ косой черты в сценарии Oracle PL/SQL ошибкой?
Я сортирую серию SQL-скриптов для моей компании, написанных на Oracle PL / 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;
5 ответов
Слэш есть значение:
выполняет последнее выполненное Команда SQL или блок PL / SQL, который хранится в буфере SQL. Вы можете введите косую черту (/) по команде подскажите или по номеру строки подскажите многострочная команда. Команда slash функции аналогично RUN, но делает не перечислять команду.
при использовании Oracle вы "смешиваете" три разных грамматики.
- SQL
- PL / SQL
- для sqlplus (клиент командной строки)
sqlplus может выполнять/обрабатывать операторы SQL и PL/SQL, отправляя их на сервер БД. В то время как команды sqlplus интерпретируются самим sqlplus.
точка с запятой ";" не является частью грамматики SQL, и sqlplus распознает ее как конец инструкции SQL. В то время как для PL / SQL это часть грамматика и должны явно сообщить sqlplus, что оператор заканчивается здесь и должен быть выполнен с помощью Слэша.
другие команды sqlplus - "EXIT", "DEFINE", "VARIABLE", "PRINT", "SET
с другой стороны, жаба, например, распознает конец блока PL/SQL, когда видит пустую строку.
/ в конце должен сказать интерпретатору, чтобы выполнить загруженный скрипт
basicaly вы набираете материал, затем набираете"/", и то, что вы только что набрали, будет выполняться
как косая черта, так и" выход " заставляют меня подозревать, что вы должны запустить этот скрипт из SQLPLUS. Вы можете получить сообщение об ошибке, если попытаетесь отправить его Oracle каким-либо другим способом. В таком случае, просто избавьтесь от обоих.
Это не ошибка. Он выполняет сценарий.
Это полезно, когда вы объединяете различные сценарии вместе в одном файле и хотите, чтобы каждая отдельная задача выполнялась до следующей.
ie создает функцию / Создайте хранимую процедуру, использующую функцию
без косой черты хранимая процедура может быть создана с ошибками или не может быть создана.