Plsql PL/SQL接受带单引号的输入。

Plsql PL/SQL接受带单引号的输入。,plsql,Plsql,我正在尝试使用PL/SQLAccept功能接收用户输入。但是,我希望用户输入能够接受单引号和/或双引号。双引号似乎不是问题,但是单引号是问题。我有我的代码张贴在下面,但我不断得到错误,因为它不喜欢单一的报价。虽然我知道在实际情况下,用户输入将通过web前端接收并传递到数据库,但不幸的是,这个家庭作业只要求PL/SQL。非常感谢您的帮助,谢谢 Accept p_1 prompt 'Please enter the region name (CHILD_NAME):' DECLARE --pr

我正在尝试使用PL/SQLAccept功能接收用户输入。但是,我希望用户输入能够接受单引号和/或双引号。双引号似乎不是问题,但是单引号是问题。我有我的代码张贴在下面,但我不断得到错误,因为它不喜欢单一的报价。虽然我知道在实际情况下,用户输入将通过web前端接收并传递到数据库,但不幸的是,这个家庭作业只要求PL/SQL。非常感谢您的帮助,谢谢

Accept p_1 prompt 'Please enter the region name (CHILD_NAME):'

DECLARE
  --pragma execption_init 
  user_input REGION.CHILD_NAME%type := '&p_1';
  v_res number :=0;

BEGIN
  SYS.DBMS_OUTPUT.PUT_LINE('USER INPUT:');
  SYS.DBMS_OUTPUT.PUT_LINE(user_input);
  SYS.DBMS_OUTPUT.PUT_LINE('');
  SYS.DBMS_OUTPUT.PUT_LINE('MY OUTPUT:');

 /* select count(*) 
  into v_res
  from REGION where upper(CHILD_NAME) like upper(user_input);
  if v_res = 0 then
    SYS.DBMS_OUTPUT.PUT_LINE(user_input ||' is not in the table.');
  else
    SYS.DBMS_OUTPUT.PUT_LINE('Need to build my logic here.');
  end if;
  SYS.DBMS_OUTPUT.PUT_LINE('');*/
END;
使用
q

set serveroutput on
accept p_1 prompt 'Say something: '

declare
  v_something varchar2(32767) := q'[&p_1]';
begin
  dbms_output.put_line('(v_something = ' || v_something || ')');
end;
/
示例运行

SQL> @so52
Say something: 'foo [is] 'bar''
old   2:       v_something varchar2(32767) := q'[&p_1]';
new   2:       v_something varchar2(32767) := q'['foo [is] 'bar'']';
(v_something = 'foo [is] 'bar'')

PL/SQL procedure successfully completed.

SQL>