Oracle PL 中的 ACCEPT 语句 SQL
ACCEPT statement in Oracle PL SQL
我是 PL 初学者 SQL。
我正在尝试使用 PL SQL ACCEPT 语句接受变量中的字符串。
这是代码 -
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE(lastname);
END;
我在 SQL Developer 中没有收到任何错误或输出。我不明白我在这里错过了什么。
基本上,我想做的是从用户那里读取一个值(字符串),然后在我对 table 的查询中使用它。
ACCEPT 是一个 SQL*Plus and SQL Developer client command, not a PL/SQL command. You are setting a substitution variable, which you could use 在一个匿名块中:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
但在 SQL 中使用它会更常见:
select '&lastname' from dual;
PL/SQL 不是为交互式使用而设计的,但不清楚您真正要做什么。
SQL 开发人员(至少版本 4.1.3)似乎无法像 SQL*Plus 那样处理 format
,这可能是一个错误。如果您使用问题中所示的 ACCEPT 和上面的代码,则脚本没有提示或输出;日志记录窗格显示来自 Accept.java:341 的 'severe' 消息。如果您还提供默认值,它确实有效:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
默认值不会显示在提示对话框中,如果您只是确定对话框,您的替换变量将包含该默认值 - 这是预期的行为 "if a reply is not given"。如果您不想要默认值,那么您会有点卡住 - 指定空默认值(''
)也会得到同样严重的消息,这可能是相关的。
我是 PL 初学者 SQL。
我正在尝试使用 PL SQL ACCEPT 语句接受变量中的字符串。 这是代码 -
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE(lastname);
END;
我在 SQL Developer 中没有收到任何错误或输出。我不明白我在这里错过了什么。
基本上,我想做的是从用户那里读取一个值(字符串),然后在我对 table 的查询中使用它。
ACCEPT 是一个 SQL*Plus and SQL Developer client command, not a PL/SQL command. You are setting a substitution variable, which you could use 在一个匿名块中:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
但在 SQL 中使用它会更常见:
select '&lastname' from dual;
PL/SQL 不是为交互式使用而设计的,但不清楚您真正要做什么。
SQL 开发人员(至少版本 4.1.3)似乎无法像 SQL*Plus 那样处理 format
,这可能是一个错误。如果您使用问题中所示的 ACCEPT 和上面的代码,则脚本没有提示或输出;日志记录窗格显示来自 Accept.java:341 的 'severe' 消息。如果您还提供默认值,它确实有效:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
默认值不会显示在提示对话框中,如果您只是确定对话框,您的替换变量将包含该默认值 - 这是预期的行为 "if a reply is not given"。如果您不想要默认值,那么您会有点卡住 - 指定空默认值(''
)也会得到同样严重的消息,这可能是相关的。