+ -
当前位置:首页 → 问答吧 → 求求求求各位大虾帮忙在“PLSQL DEVELOP”中遇到的问题

求求求求各位大虾帮忙在“PLSQL DEVELOP”中遇到的问题

时间:2011-11-22

来源:互联网

我在看视频教学时跟着敲了一段过程如下: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 ||

作者: wal2323   发布时间: 2011-11-22

sql:='SELECT pname FROM pd WHERE pid=:1';
1前面的冒号要写在等号的前面。

作者: LuiseRADL   发布时间: 2011-11-22

pid = 1,不需要冒号,呵呵。

作者: LuiseRADL   发布时间: 2011-11-22

编译通过代码请参考:
SQL code

CREATE OR REPLACE PROCEDURE TestProcedure IS
    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;

作者: LuiseRADL   发布时间: 2011-11-22

引用 2 楼 luiseradl 的回复:
pid = 1,不需要冒号,呵呵。


谁告诉你那是1,那是绑定变量。

这段代码没有任何问题,出错就2可能
一,你运行的时候是选中部分代码运行的
二,你敲的代码里面有中文的分号引号冒号,全部重新敲一遍。

作者: forgetsam   发布时间: 2011-11-23

热门下载

更多