我在看视频教学时跟着敲了一段过程如下:DECLARE
sql VARCHAR2(100);
id VARCHAR2(10):='0002'
name VARCHAR2(10);
BEGIN
sql:='SELECT pname FROM pd WHERE pid=:1';
execute immediate SQL into USING id;
DBMS_OUTPUT.put_line(name);
END;
输出报了: ORA-06550: 第 3 行, 第 1 列:
PLS-00103: 出现符号 "SQL"在需要下列之一时:
begin function package
pragma procedure subtype type use <an identifier>
<a double-quoted delimited-identifier> form current cursor
符号 "begin在 "SQL" 继续之前已插入。
ORA-06550: 第 4 行, 第 4 列:
PLS-00103: 出现符号 "VARCHAR2"在需要下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "VARCHAR2" 后继续。
ORA-06550: 第 4 行, 第 16 列:
PLS-00103: 出现符号 "="在需要下列之一时:
. ( * % & = - + ; < / > at in
is mod not rem <an exponent (**)> <> or != or ~= >= <= <> and
or like between ||
sql VARCHAR2(100);
id VARCHAR2(10):='0002'
name VARCHAR2(10);
BEGIN
sql:='SELECT pname FROM pd WHERE pid=:1';
execute immediate SQL into USING id;
DBMS_OUTPUT.put_line(name);
END;
输出报了: ORA-06550: 第 3 行, 第 1 列:
PLS-00103: 出现符号 "SQL"在需要下列之一时:
begin function package
pragma procedure subtype type use <an identifier>
<a double-quoted delimited-identifier> form current cursor
符号 "begin在 "SQL" 继续之前已插入。
ORA-06550: 第 4 行, 第 4 列:
PLS-00103: 出现符号 "VARCHAR2"在需要下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "VARCHAR2" 后继续。
ORA-06550: 第 4 行, 第 16 列:
PLS-00103: 出现符号 "="在需要下列之一时:
. ( * % & = - + ; < / > at in
is mod not rem <an exponent (**)> <> or != or ~= >= <= <> and
or like between ||
1前面的冒号要写在等号的前面。
mySQL VARCHAR2(100);
id VARCHAR2(10) := '0002';
NAME VARCHAR2(10);
BEGIN
mySQL:= 'SELECT first_name from employees where employee_id = 1';
EXECUTE IMMEDIATE mySQL INTO id;
DBMS_OUTPUT.PUT_LINE(NAME);
END TestProcedure;
这里改成
execute immediate SQL into name USING id;
DECLARE
sql VARCHAR2(100);
id VARCHAR2(10):='0002'
name VARCHAR2(10);
BEGIN
sql:='SELECT pname FROM pd WHERE pid=:1';
execute immediate SQL name into USING id;
DBMS_OUTPUT.put_line(name);
END;
s VARCHAR2(100);
id VARCHAR2(10):='0002';
name VARCHAR2(10);
BEGIN
s:='SELECT 11 FROM dual';
execute immediate s into name ;
DBMS_OUTPUT.put_line(name);
END;