1.oracle 判断某一个存储过程是否存在
SELECTdistinctname
FROMUSER_SOURCE
WHERETYPE ='PROCEDURE'
andname='procedurename';
2.oracle 判断一个表是否已存在
用如下sql语句即可判断:
selectt.*fromuser_tables twhereupper(t.TABLE_NAME)=upper('tablename');
oracle可以内置在insert语句中进行判断,如下sql:
insert
when(notexists (select1fromt_test_lllwhereid ='111'))then
intot_test_lll(id)select'111'fromdual;
这样,当数据库里有一个id='111'的记录的时候,就不会进行insert操作了。
1.set feedback on
默认的当一条sql发出的时候,oracle会给一个反馈。
比如说执行下面这个创建表语句:
createtablet_test_lll(id varchar2(10));
命令行会返回:Table created。
set feedback off--将feedback设为off,以关闭反馈信息
set feedback n---当一条sql语句返回n或者大于n行记录的时候,就会有feedback。
5.存储过程执行获取异常
whenothersthen
v_ErrMsg := SUBSTRB(SQLERRM, 1, 200);
dbms_output.put_line('找不到相应学生,错误原因:'||v_ErrMsg);
6.Oracle 动态SQL
执行动态sql的语法为:
Excute immediate 动态SQL语句 using 绑定参数列表 returning into 输出参数列表
测试表:表:student(id,name,age);
例子:存储过程 create or replace procedure p_stu_info(s_id number) is
v_name varchar2(10);
v_age number;
begin
execute immediate 'select name,age from studentwhere id=:1'
using s_id
returning into v_name, v_age;
dbms_output.put_line(v_name || '的年龄为:' || to_char(v_age));
exception
when others then
dbms_output.put_line('找不到相应学生');
end p_stu_info;