- 浏览: 155885 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
atgfss:
采用在cookies中保存用户名和sessionid的这种方式 ...
自动登录 -
liumm19870913:
对有输入参数过程的调用
我试过那代码 , 有问题呀,funct ...
oracle 存储过程调用 -
zdsyouxiang:
内容很全面!
认识多任务、多进程、单线程、多线程
oracle 存储过程调用
- 博客分类:
- 数据库相关
oracle存储过程
2011年02月11日 星期五 14:47
SQL中调用存储过程语句:
call procedure_name();
调用时”()”是不可少的,无论是有参数还是无参数。
定义对数据库过程的调用时 无参数过程:{ call procedure_name} 仅有输入参数的过程:{call procedure_name(?,?...)} 这里?表示输入参数,创建存储过程时用in表示输入参数
仅有输出参数的过程:{ Call procedure_name(?,?...)} 这里的?表示输出参数,创建存储过程时用out表示输入参数
既有输入参数又有输出参数的过程 {call procedure_name(?,?...)} 这里的?有表示输出参数的,也有表示输入参数的
下面将会对这4种情况分别举出实例!!!
参数过程实例
无参数存储过程:
create or replace procedure stu_proc as
pname varchar2(25);
begin
select sname into pname from student where sno=1;
dbms_output.put_line(pname);
end;
或者
create or replace procedure stu_proc as
pname student.sname%type;
begin
select sname into p_name from student where sno=1;
dbms_output.put_line(pname);
end;
参数过程实例
仅有输入参数的过程
create or replace procedure stu_proc1(pno in student.sno%type) as
pname varchar2(25);
begin
select sname into pname from student where sno=pno;
dbms_output.put_line(pname);
end;
参数过程实例
仅有输出参数的存储过程
create or replace procedure stu_proc2(pname out student.sname%type) as
begin
select sname into pname from student where sno=1;
dbms_output.put_line(pname);
end;
此种存储过程不能直接用call来调用,这种情况的调用将在下面oracle函数调用中说明
参数过程实例
有输入\输出参数的存储过程:
create or replace procedure stu_proc3
(pno in student.sno%type,pname out student.sname%type) as
begin
select sname into pname from student where sno=pno;
dbms_output.put_line(pname);
end;
此种存储过程不能直接用call来调用,这种情况的调用将在下面oracle函数调用中说明
Oracle函数调用存储过程
我们已经学习了oracle函数,下面就针对参数的4种情况分别举出实例说明函数对存储过程的调用
函数调用存储过程实例
对无参数过程的调用:
--函数
create or replace function get_pname return varchar2 is
pname varchar2(20);
begin
stu_proc;
select sname into pname from student where sno=1;
return pname;
end;
--调用
declare
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname);
end;
函数调用存储过程实例
对有输入参数过程的调用:
create or replace function get_pname1(pno in number) return varchar2 is
pname varchar2(20);
begin
stu_proc1(pno in student.sno%type)
select sname into pname from student where sno=pno;
return pname;
end;
--调用
declare
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname1(2));
end;
函数调用存储过程实例
对有输出参数过程的调用:
create or replace function get_pname2(pname out varchar2) return varchar2 is
begin
stu_proc2(pname out student.sname%type);
return pname;
end;
--调用
declare
pname student.sname%type;
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname2(pname));
end;
函数调用存储过程实例
对有输入\输出参数过程的调用:
create or replace function get_pname3(pno in number,pname out varchar2) return varchar2 is
begin
stu_proc3(pno in student.sno%type,pname out student.sname%type);
return pname;
end;
--调用
declare
pname student.sname%type;
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname3(2,pname));
end;
JAVA调用数据库存储过程
前面我们已经讲述了有关oracle数据库的存储过程的几种形式,以及oracle函数对存储过程的调用,下面我将根据上面存储过程的实例来举出JAVA对oracle存储过程的调用
JAVA调用实例
仅有返回值的过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc2(?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.registerOutParameter(1,Types.VARCHAR);
statement.execute();
String pname=statement.getString(1);
System.out.println(pname);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
JAVA调用实例
既有输入参数又有输出参数的过程
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc3(?,?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.setInt(1, 1);
statement.registerOutParameter(2,Types.VARCHAR);
statement.execute();
String pname=statement.getString(2);
System.out.println(pname);
} catch (SQLException e) {
e.printStackTrace();
}
}
JAVA调用实例
下面将举出无out参数的调用实例
这种参数不适于用在查询语句上,因为查询语句需要有返回值才能被JAVA调用
返回到 OUT 参数中的值可能会是JDBC NULL。当出现这种情形时,将对 JDBC NULL 值进行转换以使 getXXX 方法所返回的值为 null、0 或 false,这取决于getXXX 方法类型。对于 ResultSet 对象,要知道0或false是否源于JDBCNULL的唯一方法,是用方法wasNull进行检测。如果 getXXX 方法读取的最后一个值是 JDBC NULL,则该方法返回 true,否则返回 flase
JAVA调用实例
仅有参数的过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc1(?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.setInt(1, 1);
statement.execute();
System.out.println(statement.execute());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
JAVA调用实例
无参数过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc()}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.execute();
System.out.println(statement.execute());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
通过调用数据库函数调用存储过程
下面将举一个通过数据库函数来调用存储过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{?=call get_pname1(?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.registerOutParameter(1, Types.VARCHAR);
statement.setInt(2, 1);
statement.execute();
System.out.println(statement.getString(1));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
?表示函数return的值, get_pname1是数据库函数名
存储过程的out和in都是以参数传进,这就是函数和存储过程的区别之一
存储过程的异常处理
为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分。
异常(EXCEPTION)是一种PL/SQL标识符,包括预定义异常、非预定义异常和自定义异常;
预定义异常是指由PL/SQL提供的系统异常;非预定义异常用于处理与预定义异常无关的Oracle错误(如完整性约束等);自定义异常用于处理与Oracle错误的其他异常情况。
RAISE_APPLICATION_ERROR用于自定义错误消息,并且消息号必须在-20000~-20999之间
存储过程的异常处理实例
Oracle数据库中提供了一些异常处理的方法,下面通过一个实例来说明
create or replace procedure stu_proc6(pno in student.sno%type,pname out student.sname%type)
is
begin
select sname into pname from student where sno=pno;
EXCEPTION
when NO_DATA_FOUND then
RAISE_APPLICATION_ERROR
(-20011,'ERROR:不存在!');
end;
Oracle提供的异常处理
命名的系统异常 产生原因
ACCESS_INTO_NULL 未定义对象
CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置
COLLECTION_IS_NULL 集合元素未初始化
CURSER_ALREADY_OPEN 游标已经打开
DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值
INVALID_CURSOR 在不合法的游标上进行操作
INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字
NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化的
TOO_MANY_ROWS 执行 select into 时,结果集超过一行
ZERO_DIVIDE 除数为 0
SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套表或 VARRAY 的最大值
SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或 VARRAY 时,将下标指定为负数
VALUE_ERROR 赋值时,变量长度不足以容纳实际数据
LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库时,提供了不正 确的用户名或密码
NOT_LOGGED_ON PL/SQL 应用程序在没有连接 oralce 数据库的情况下访 问数据
PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl./SQL系 统包
ROWTYPE_MISMATCH 主游标变量与 PL/SQL 游标变量的返回类型不兼容
SELF_IS_NULL 使用对象类型时,在 null 对象上调用对象方法
STORAGE_ERROR 运行 PL/SQL 时,超出内存空间
SYS_INVALID_ID 无效的 ROWID 字符串
TIMEOUT_ON_RESOURCE Oracle 在等待资源时超时
存储过程的异常处理实例
自定义异常处理:
create or replace procedure stu_proc7(pno in student.sno%type,
pon in student.sno%type
)
is
v_raise exception;
v_name student.sname%type;
begin
if pno=101 then
raise v_raise;
end if;
select sname into v_name from student where sno=111111;
exception
when v_raise then
RAISE_APPLICATION_ERROR(-20010,'ERROR:not existed!');
when no_data_found then
RAISE_APPLICATION_ERROR(-20011,'ERROR:不存在!');
end;
存储过程的事务处理
事务用于确保数据的一致性,由一组相关的DML语句组成,该组DML语句所执行的操作要么全部确认,要么全部取消。
当执行事务操作(DML)时,Oracle会在被作用的表上加锁,以防止其他用户改变表结构,同时也会在被作用的行上加行锁,以防止其他事务在相应行上执行DML操作。
当执行事务提交或事务回滚时,Oracle会确认事务变化或回滚事务、结束事务、删除保存点、释放锁。
存储过程的事务处理
提交事务(COMMIT)确认事务变化,结束当前事务、删除保存点,释放锁,使得当前事务中所有未决的数据永久改变。
保存点(SAVEPOINT)在当前事务中,标记事务的保存点。
回滚事务(ROLLBACK)回滚整个事务,删除该事务所定义的所有保存点,释放锁,丢弃所有未决的数据改变。
回滚事务到指定的保存点(ROLLBACK TO SAVEPOINT)回滚当前事务到指定的保存点,丢弃该保存点创建后的任何改变,释放锁。
存储过程的事务处理
当执行DDL、DCL语句,或退出SQL*PLUS时,会自动提交事务;
事务期间应避免与使用者互动;
查询数据期间,尽量不要启动事务;
尽可能让事务持续地越短越好;
在事务中尽可能存取最少的数据量。
事务处理实例
存储过程事务处理实例:
create or replace procedure stu_proc8
is
begin
insert into student values(102,'sky','m',22,'gong');
savepoint savepoint1;
insert into student values(102,'good','w',20,'wang');
dbms_output.put_line('error');
update student set sno=103 where sname='good';
commit;
exception
when dup_val_on_index then
rollback to savepoint savepoint1;
RAISE_APPLICATION_ERROR(-20010,'ERROR:违反唯一索引约束!');
end;
数据库函数和存储过程的包
创建包(package)
函数:
create or replace package 包名 as 函数
注意:as后可加多个函数
存储过程:
Create or replace package 包名 as 存储过程
注意:as后可加多个存储过程
包的调用
函数的包调用:
call 包名.函数名;
存储过程的包调用:
call 包名.存储过程名;
THE END
2011年02月11日 星期五 14:47
SQL中调用存储过程语句:
call procedure_name();
调用时”()”是不可少的,无论是有参数还是无参数。
定义对数据库过程的调用时 无参数过程:{ call procedure_name} 仅有输入参数的过程:{call procedure_name(?,?...)} 这里?表示输入参数,创建存储过程时用in表示输入参数
仅有输出参数的过程:{ Call procedure_name(?,?...)} 这里的?表示输出参数,创建存储过程时用out表示输入参数
既有输入参数又有输出参数的过程 {call procedure_name(?,?...)} 这里的?有表示输出参数的,也有表示输入参数的
下面将会对这4种情况分别举出实例!!!
参数过程实例
无参数存储过程:
create or replace procedure stu_proc as
pname varchar2(25);
begin
select sname into pname from student where sno=1;
dbms_output.put_line(pname);
end;
或者
create or replace procedure stu_proc as
pname student.sname%type;
begin
select sname into p_name from student where sno=1;
dbms_output.put_line(pname);
end;
参数过程实例
仅有输入参数的过程
create or replace procedure stu_proc1(pno in student.sno%type) as
pname varchar2(25);
begin
select sname into pname from student where sno=pno;
dbms_output.put_line(pname);
end;
参数过程实例
仅有输出参数的存储过程
create or replace procedure stu_proc2(pname out student.sname%type) as
begin
select sname into pname from student where sno=1;
dbms_output.put_line(pname);
end;
此种存储过程不能直接用call来调用,这种情况的调用将在下面oracle函数调用中说明
参数过程实例
有输入\输出参数的存储过程:
create or replace procedure stu_proc3
(pno in student.sno%type,pname out student.sname%type) as
begin
select sname into pname from student where sno=pno;
dbms_output.put_line(pname);
end;
此种存储过程不能直接用call来调用,这种情况的调用将在下面oracle函数调用中说明
Oracle函数调用存储过程
我们已经学习了oracle函数,下面就针对参数的4种情况分别举出实例说明函数对存储过程的调用
函数调用存储过程实例
对无参数过程的调用:
--函数
create or replace function get_pname return varchar2 is
pname varchar2(20);
begin
stu_proc;
select sname into pname from student where sno=1;
return pname;
end;
--调用
declare
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname);
end;
函数调用存储过程实例
对有输入参数过程的调用:
create or replace function get_pname1(pno in number) return varchar2 is
pname varchar2(20);
begin
stu_proc1(pno in student.sno%type)
select sname into pname from student where sno=pno;
return pname;
end;
--调用
declare
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname1(2));
end;
函数调用存储过程实例
对有输出参数过程的调用:
create or replace function get_pname2(pname out varchar2) return varchar2 is
begin
stu_proc2(pname out student.sname%type);
return pname;
end;
--调用
declare
pname student.sname%type;
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname2(pname));
end;
函数调用存储过程实例
对有输入\输出参数过程的调用:
create or replace function get_pname3(pno in number,pname out varchar2) return varchar2 is
begin
stu_proc3(pno in student.sno%type,pname out student.sname%type);
return pname;
end;
--调用
declare
pname student.sname%type;
begin
dbms_output.put_line('在PL/SQL中打印的结果:'||get_pname3(2,pname));
end;
JAVA调用数据库存储过程
前面我们已经讲述了有关oracle数据库的存储过程的几种形式,以及oracle函数对存储过程的调用,下面我将根据上面存储过程的实例来举出JAVA对oracle存储过程的调用
JAVA调用实例
仅有返回值的过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc2(?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.registerOutParameter(1,Types.VARCHAR);
statement.execute();
String pname=statement.getString(1);
System.out.println(pname);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
JAVA调用实例
既有输入参数又有输出参数的过程
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc3(?,?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.setInt(1, 1);
statement.registerOutParameter(2,Types.VARCHAR);
statement.execute();
String pname=statement.getString(2);
System.out.println(pname);
} catch (SQLException e) {
e.printStackTrace();
}
}
JAVA调用实例
下面将举出无out参数的调用实例
这种参数不适于用在查询语句上,因为查询语句需要有返回值才能被JAVA调用
返回到 OUT 参数中的值可能会是JDBC NULL。当出现这种情形时,将对 JDBC NULL 值进行转换以使 getXXX 方法所返回的值为 null、0 或 false,这取决于getXXX 方法类型。对于 ResultSet 对象,要知道0或false是否源于JDBCNULL的唯一方法,是用方法wasNull进行检测。如果 getXXX 方法读取的最后一个值是 JDBC NULL,则该方法返回 true,否则返回 flase
JAVA调用实例
仅有参数的过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc1(?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.setInt(1, 1);
statement.execute();
System.out.println(statement.execute());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
JAVA调用实例
无参数过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{call stu_proc()}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.execute();
System.out.println(statement.execute());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
通过调用数据库函数调用存储过程
下面将举一个通过数据库函数来调用存储过程:
public static void main(String[] args) {
Connection conn=BBConnection.getConnection();
String sql="{?=call get_pname1(?)}";
try {
CallableStatement statement=conn.prepareCall(sql);
statement.registerOutParameter(1, Types.VARCHAR);
statement.setInt(2, 1);
statement.execute();
System.out.println(statement.getString(1));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
?表示函数return的值, get_pname1是数据库函数名
存储过程的out和in都是以参数传进,这就是函数和存储过程的区别之一
存储过程的异常处理
为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分。
异常(EXCEPTION)是一种PL/SQL标识符,包括预定义异常、非预定义异常和自定义异常;
预定义异常是指由PL/SQL提供的系统异常;非预定义异常用于处理与预定义异常无关的Oracle错误(如完整性约束等);自定义异常用于处理与Oracle错误的其他异常情况。
RAISE_APPLICATION_ERROR用于自定义错误消息,并且消息号必须在-20000~-20999之间
存储过程的异常处理实例
Oracle数据库中提供了一些异常处理的方法,下面通过一个实例来说明
create or replace procedure stu_proc6(pno in student.sno%type,pname out student.sname%type)
is
begin
select sname into pname from student where sno=pno;
EXCEPTION
when NO_DATA_FOUND then
RAISE_APPLICATION_ERROR
(-20011,'ERROR:不存在!');
end;
Oracle提供的异常处理
命名的系统异常 产生原因
ACCESS_INTO_NULL 未定义对象
CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置
COLLECTION_IS_NULL 集合元素未初始化
CURSER_ALREADY_OPEN 游标已经打开
DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值
INVALID_CURSOR 在不合法的游标上进行操作
INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字
NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化的
TOO_MANY_ROWS 执行 select into 时,结果集超过一行
ZERO_DIVIDE 除数为 0
SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套表或 VARRAY 的最大值
SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或 VARRAY 时,将下标指定为负数
VALUE_ERROR 赋值时,变量长度不足以容纳实际数据
LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库时,提供了不正 确的用户名或密码
NOT_LOGGED_ON PL/SQL 应用程序在没有连接 oralce 数据库的情况下访 问数据
PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl./SQL系 统包
ROWTYPE_MISMATCH 主游标变量与 PL/SQL 游标变量的返回类型不兼容
SELF_IS_NULL 使用对象类型时,在 null 对象上调用对象方法
STORAGE_ERROR 运行 PL/SQL 时,超出内存空间
SYS_INVALID_ID 无效的 ROWID 字符串
TIMEOUT_ON_RESOURCE Oracle 在等待资源时超时
存储过程的异常处理实例
自定义异常处理:
create or replace procedure stu_proc7(pno in student.sno%type,
pon in student.sno%type
)
is
v_raise exception;
v_name student.sname%type;
begin
if pno=101 then
raise v_raise;
end if;
select sname into v_name from student where sno=111111;
exception
when v_raise then
RAISE_APPLICATION_ERROR(-20010,'ERROR:not existed!');
when no_data_found then
RAISE_APPLICATION_ERROR(-20011,'ERROR:不存在!');
end;
存储过程的事务处理
事务用于确保数据的一致性,由一组相关的DML语句组成,该组DML语句所执行的操作要么全部确认,要么全部取消。
当执行事务操作(DML)时,Oracle会在被作用的表上加锁,以防止其他用户改变表结构,同时也会在被作用的行上加行锁,以防止其他事务在相应行上执行DML操作。
当执行事务提交或事务回滚时,Oracle会确认事务变化或回滚事务、结束事务、删除保存点、释放锁。
存储过程的事务处理
提交事务(COMMIT)确认事务变化,结束当前事务、删除保存点,释放锁,使得当前事务中所有未决的数据永久改变。
保存点(SAVEPOINT)在当前事务中,标记事务的保存点。
回滚事务(ROLLBACK)回滚整个事务,删除该事务所定义的所有保存点,释放锁,丢弃所有未决的数据改变。
回滚事务到指定的保存点(ROLLBACK TO SAVEPOINT)回滚当前事务到指定的保存点,丢弃该保存点创建后的任何改变,释放锁。
存储过程的事务处理
当执行DDL、DCL语句,或退出SQL*PLUS时,会自动提交事务;
事务期间应避免与使用者互动;
查询数据期间,尽量不要启动事务;
尽可能让事务持续地越短越好;
在事务中尽可能存取最少的数据量。
事务处理实例
存储过程事务处理实例:
create or replace procedure stu_proc8
is
begin
insert into student values(102,'sky','m',22,'gong');
savepoint savepoint1;
insert into student values(102,'good','w',20,'wang');
dbms_output.put_line('error');
update student set sno=103 where sname='good';
commit;
exception
when dup_val_on_index then
rollback to savepoint savepoint1;
RAISE_APPLICATION_ERROR(-20010,'ERROR:违反唯一索引约束!');
end;
数据库函数和存储过程的包
创建包(package)
函数:
create or replace package 包名 as 函数
注意:as后可加多个函数
存储过程:
Create or replace package 包名 as 存储过程
注意:as后可加多个存储过程
包的调用
函数的包调用:
call 包名.函数名;
存储过程的包调用:
call 包名.存储过程名;
THE END
发表评论
-
mysql编码
2014-11-26 13:40 637mysql> SHOW VARIABLES LIKE ' ... -
mysql备份恢复
2012-07-10 09:23 806mysql数据库备份及恢复命令mysqldump,source ... -
oracle 创建用户表空间导入导出命令
2011-10-18 10:17 882//创建临时表空间 create temporary tabl ... -
oracle 触发器编写
2011-10-18 09:29 933//触发器名UserToTemp crea ... -
一张表里面有两个字段a,b如果a大于b则显示a,否则显示b.怎么写sql语句
2011-09-15 14:05 1309写法1 select case when a>b ... -
表的纵横转化 sqlserver
2011-09-09 17:55 966在sqlserver中,我有view结果如下: cardno ... -
select count(1) 和 select count(*)
2011-09-06 09:59 1066数据库 select count(*) 和 select co ... -
oracle job
2011-08-10 17:07 990begin sys.dbms_job.submit(j ... -
oracle 数据导入txt execl等
2011-08-10 16:34 1923方法一,使用SQL*Loader ... -
数据库查询速度慢可能原因
2011-08-08 10:14 1039查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有 ... -
CLUSTER INDEX
2011-08-08 09:53 837CLUSTER INDEX 聚簇索引(以postgre 数据库 ... -
使用PowerDesigner进行代码生成
2011-07-05 13:49 1206很多代码生成器都选择了从表结构来生成领域模型,这样的方案有一个 ... -
oracle 心得
2011-06-27 10:46 1755oracle的使用心得 1、DDL(Data Definit ... -
oracle exp imp
2011-06-26 16:47 931导出远程服务器端的 oracle 需要本地安装客户端 配置好 ... -
数据库事务
2011-06-25 15:22 987事务(Transaction)是访问并 ... -
sql*plus命令
2011-06-25 09:06 739Oracle的sql*plus是与oracle进行交互的客户端 ... -
一些sql
2011-04-19 09:31 711更新 update A a set a.XX = ... -
表复制语句 insert into 的两种区别
2011-03-25 13:31 12211.INSERT INTO SELECT语句 语句 ...
相关推荐
本话题将详细探讨如何在Oracle存储过程中调用外部的批处理脚本,如Windows系统的BAT文件,以实现数据库操作与系统命令的集成。 首先,`Oracle存储过程`是一种预编译的SQL和PL/SQL代码集合,可以被多次调用以执行...
oracle存储过程调用实例解析,使用实例
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...
在软件开发中,熟练掌握Oracle存储过程的调用是必要的,因为它能提高应用程序的性能,减少网络传输,并提供更好的数据库安全性。 1. ORA-00921: unexpected end of SQL command 这个错误通常是因为SQL语句的语法不...
存储过程是预编译的SQL和PL/SQL语句集合,它们存储在数据库中并可以被调用执行。通过存储过程,我们可以封装复杂的业务逻辑,提高代码复用性和执行效率。 在Oracle中,访问接口通常需要使用UTL_HTTP或者DBMS_HTTP包...
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励。
本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...
ibatis调用oracle存储过程分页
以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....
ORACLE 存储过程的异步调用 本文讨论了 ORACLE 存储过程的异步调用方法,旨在解决客户端长时间等待存储过程执行的问题。主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包...
- **Hibernate调用Oracle存储过程**:Hibernate框架支持调用存储过程,通过映射配置文件或注解指定存储过程的调用方式。 - **用Java调用Oracle存储过程**:使用`CallableStatement`接口来调用存储过程,设置输入...
总结起来,"帆软报表Oracle存储过程解决storeParameter1参数试用插件"主要是针对在调用无参数Oracle存储过程时出现的异常问题提供的一种解决方案。通过安装并配置这个插件,用户可以顺利地在帆软报表中调用不包含...
这个场景中,"oracl通过存储过程POST方式访问接口"的描述指的是利用Oracle的内置包UTL_HTTP来实现数据库内部对HTTP服务的调用,以POST方法提交JSON格式的数据。这种方式常用于集成、自动化流程或数据交换等任务。 ...
vba 调用oracle 存储过程vba 调用oracle 存储过程vba 调用oracle 存储过程vba 调用oracle 存储过程vba 调用oracle 存储过程
### Oracle存储过程中调用WebService的方法解析 在Oracle数据库中,通过存储过程调用WebService是一种常见的需求,尤其是在需要与外部系统进行交互的情况下。本文将详细解释如何实现这一功能,并且会结合给定的部分...
#### 十、Oracle存储过程调用Java方法 - **原理**: 通过Java存储过程的方式,使得存储过程可以调用Java类的方法。 - **示例**: 定义一个Java类并注册为存储过程,然后在存储过程中调用该Java方法。 #### 十一、...
在实际的业务场景中,有时我们需要调用数据库中的存储过程来获取或处理数据,本篇将详细介绍如何在润乾报表中调用Oracle存储过程。 首先,我们要在Oracle数据库中创建存储过程。以下是一个简单的存储过程示例,名为...