#oracle #plsql
#Oracle #plsql
Вопрос:
create or replace procedure HelloWorld(s varchar)
as
begin
dbms_output.put_line(s);
end;
-------- click execute button now
exec HelloWorld('Hello');
Приведенные выше коды взяты из школьного слайда. Первый код отображается как «процедура создана», что означает, что все готово. Когда я выполняю его с помощью ‘exec HelloWorld (‘Hello’);’, он показывает ошибки. Могу ли я задать несколько вопросов относительно этого кода, пожалуйста?
1) Почему это не работает, когда я его выполняю?
2) Я знаю, что ‘s’ — это параметр, а ‘varchar’ — это тип данных для ‘s’. Однако код требует, чтобы печатались ‘s’. Как я вижу, нечего назначать на ‘s’. Тогда, как код может запускать значение ‘s’ в ‘dbms_output.put_line(s);’?
3) Может кто-нибудь просто объяснить, какова базовая функция для каждого отдельного слова?
Комментарии:
1. » это показывает ошибки » — и что именно это за ошибка?
2. ОШИБКА в строке 1: ORA-06550: строка 1, столбец 18: PLS-00103: Обнаружен символ «‘» при ожидании одного из следующих: ( ) — case mod new not null <идентификатор> <идентификатор с разделителями в двойных кавычках> <переменная привязки> таблица продолжить среднее значение текущего значения существует макс мин. предыдущее значение sql stddev сумма отклонений выполнить мультинабор обоих начальных значений для всего слияния год месяц день час минута второй часовой пояс_часовой timezone_minute timezone_region timezone_abbr время интервал временной метки дата <строковый литерал со спецификацией набора символов>
3. Не ясно, что вы делаете неправильно. Процедура компилируется без ошибок (неудивительно, поскольку она правильная), и вызов отлично работает на моей машине. Вы уверены, что просто выполняете функцию, а не дополнительный код? Затем — в Oracle, приобретите привычку использовать тип данных varchar2 (позже вы узнаете, почему). ‘s’ в определении функции является заполнителем — он присваивается при «выполнении» функции. Ему присваивается значение, которое вы заключаете в круглые скобки при вызове функции — в данном случае «Привет». Так работают функции во всех вычислениях, а не только в Oracle.
4. Это долгий путь, но …. вы скопировали / вставили это? потому что, если вам предоставлен код странным шрифтом, это испортит символ одиночной кавычки. Символ, который вы вставили в свой комментарий, — это ‘ но это недопустимый символ — вам нужно использовать ‘ вместо этого. Я знаю, что трудно увидеть разницу, но вставьте эти две вещи в word и посмотрите на них — это разные символы. В качестве альтернативы, зайдите в свой код в редакторе и убедитесь, что вы нажимаете клавишу ‘, а не копируете вставку.
5. Хорошо, спасибо всем, я понял.