procdeure调用问题
create or replace procedure proc_test(id       in VARCHAR2,
                                       username in VARCHAR2,
                                       pass     in VARCHAR2) is
   v_sql VARCHAR2(300);
begin
   v_sql := 'insert into users values(' || id || ',' || username || ',' || pass || ')';
   execute immediate v_sql;
exception
   when others then
     rollback;    
end proc_test;
请问上面那个v_sql有错吗?我执行是成功的。
存储过程是存在的,文本如上。
我分别在sql plus和pl/sql developer中都调用
execute proc_test('2','2','2');
执行的。
在sql plus中报proc_test无效
还有个问题就是:
insert into tb_name values(:a,:b);
请问这个:在这里是什么作用?
本人新手,刚自学oracle这块,请各位指教。谢谢!谢谢!
------解决方案--------------------我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html
------解决方案--------------------经测试,你的存储过程没有问题啊
SQL> create table users(id varchar2(10),username varchar2(10),pass varchar2(10));
Table created
SQL>  
SQL> create or replace procedure proc_test(id in VARCHAR2,
 2     username in VARCHAR2,
 3     pass in VARCHAR2) is
 4     v_sql VARCHAR2(300);
 5  begin
 6     v_sql := 'insert into users values(' || id || ',' || username || ',' || pass || ')';
 7     execute immediate v_sql;
 8  exception
 9     when others then
  10     rollback;
  11 
  12  end proc_test;
  13  /
Procedure created
SQL> execute proc_test('2','2','2');
PL/SQL procedure successfully completed
SQL> select * from users;
ID         USERNAME   PASS
---------- ---------- ----------
2          2          2
------解决方案--------------------SQL code
--虽然你的存储过程编译没有错,可能存在运行错误
CREATE OR REPLACE PROCEDURE proc_test(id       IN VARCHAR2,
                                      username IN VARCHAR2,
                                      pass     IN VARCHAR2) IS
  v_sql VARCHAR2(300);
BEGIN
   --你的username为varchar2类型,插入值时要加入引号
   --包含在字符串中的两个单引号表示一个单引号
   v_sql := 'insert into users values(''' || id || ''',''' || username ||
           ''',''' || pass || ''')';
  EXECUTE IMMEDIATE v_sql;
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
END proc_test;
------解决方案--------------------
up.........