oracle11g存储过程
⑴ oracle11g存储过程循环游标的区别
游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。
中文名
游标
外文名
Cursor
步骤1
游标定义
步骤2
打开游标
步骤3
提取游标
快速
导航
定义概念种类使用游标
基本信息
把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。
定义概念
主语言是面向记录的,一组主变量一次只能存放一条记录,仅使用主变量并不能完全满足sql语句向应用程序输出数据的要求。即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案。
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标可以被看作是一个查询结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据、处理结果集中数据的能力。有了游标,用户就可以访问结果集中任意一行数据,在将游标放置到某行之后,可以在该行或从该位置的行块上执行操作。
当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。
关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。
⑵ Oracle11g 存储过程 保密(非加密)
在PL/SQLdeveloper中先执行包头、然后再wrap加密包体
SQL>createorreplacepackagepkg_wrap_testis
2--测试过程,将输入的数字以字符格式输出
3proceretest1(iinnumber);
4ENDpkg_wrap_test;
5/
⑶ Oracle11g里面如果在存储过程里面需要查找多次然后一次返回怎么写
这是你要的么 String sql = "select id, password, name from user_sd1104 " +
"where id = 1001 and password = '1234'";
Statement stmt = conn.createStatement();
ResultSet rs
= stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt(1);
String pwd = rs.getString(2);
String name = rs.getString(3);
System.out.println("welcome," + name);
}
rs.close();
stmt.close();
conn.close();
⑷ oracle 11g 如何查看自己建立过的存储过程的名称和对应名称的代码
SELECT * FROM dba_source WHERE TYPE='PROCEDURE' AND owner='USER_NAME'
ORDER BY NAME,line; --查看存储过程名和代码
SELECT dbms_metadata.get_ddl('PROCEDURE','PRO_NAME','USER_NAME') FROM al; --如果知道存储过程名和用户名可以用这个语句
⑸ oracle 11g expdp 可以导出存储过程吗
为什么非要用expdp导出,直接复制就好了。
可以导出存储过程,我知道imp导入时有一个编译的参数(COMPILE,默认是Y),那么exp一定可以导出。
expdp是exp的升级版本,那么按照用户导出的,应该也会包含该用户下的过程。
只导出存储过程的,似乎不行。
⑹ oracle 11g expdp 可以导出存储过程吗
从oracle
12c
备份(expdp)出来的包,还原到11g里,想想都知道会有兼容性问题。
果不其然,报错了:
ora-39142:
版本号
4.1
(在转储文件
“叉叉叉.expdp”
中)
不
兼容
之类
后来才知道,在12c中备份出来时,应指定版本信息,例如我要导进11g的库(具体版本为11.1.0.6.0,打开sqlplus就能看到),则version=11.1.0.6.0
语句:
在12c备份
?
1
expdp
system/password@sid12c
directory=dbbak
mpfile=20160321.expdp
logfile=20160321.log
schemas=leftfist
version=11.1.0.6.0
在11g中还原
?
1
impdp
s
⑺ 哪位高人说说 Oracle 11g 编译存储过程非常缓慢是怎么回事
客户端向服务器端的网络?感觉也正好是忙的时候你的数据库编译。 。 。
⑻ oracle 11g怎么设定job执行存储过程,存储过程有输入参数
放begin ... end;里,在begin之前定义入参,之后设置入参不就行了
⑼ oracle11g 存储过程
利用客户端软件OBJECT BROWSER或者PLSQL 表示菜单中有一个脚本实行项,打开,把你的视图和存储过程的SQL文件选择好后,点击实行就好了.
⑽ oracle11g 存储过程
下了个简单的调用存储过程的代码:
//存储过程调用的字符串格式{call 存储过程名(参数1|参数2)} 无惨也可以
String sql="{call getCouserInfo(?,?,?)}";
CallableStatement cs=conn.prepareCall(sql);
//为第一个问号赋值
cs.setInt(1, 1);
//因为第二,三个问号代表的是输出参数,所以只需要指定返回类型就可以了
cs.registerOutParameter(2, java.sql.Types.VARCHAR);
cs.registerOutParameter(3, java.sql.Types.INTEGER);
cs.execute();
//返回输出参数中的值
String name=cs.getString(2);
int score=cs.getInt(3);
(2)没有返回参数,但是有结果集的时候
//存储过程调用的字符串格式{call 存储过程名(参数1|参数2)} 无惨也可以
String sql="{call getAllCourse()}";
CallableStatement cs=conn.prepareCall(sql);
ResultSet rs=cs.executeQuery();