首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

procdeure调用有关问题

2012-02-07 
procdeure调用问题create or replace procedure proc_test(idin VARCHAR2,username in VARCHAR2,passin VA

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.myexception.cn/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.........

热点排行