??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲午夜无码久久久久小说,亚洲av成人一区二区三区观看在线 ,亚洲人成电影在线观看网 http://www.tkk7.com/kxbin/category/50464.html成功留给有准备的?/description>zh-cnWed, 17 Apr 2013 12:04:45 GMTWed, 17 Apr 2013 12:04:45 GMT60win7 64位系l?pl sql 无法解析指定的连接标识符 解决办法http://www.tkk7.com/kxbin/articles/397925.htmlkxbinkxbinTue, 16 Apr 2013 08:25:00 GMThttp://www.tkk7.com/kxbin/articles/397925.htmlhttp://www.tkk7.com/kxbin/comments/397925.htmlhttp://www.tkk7.com/kxbin/articles/397925.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/397925.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/397925.htmlpȝ是win764位,装好后,装了pl/sql 和toadQ都q不上数据库Q报错位“ql 无法解析指定的连接标识符” 解决办法Q我勒个去!马情况吗!很是郁闷Q经q研I发现安装目录有问题。默认会安装?#8220;C:\Program Files (x86)”q个目录下,Q以前有I格也没问题Qv初没在意Q后来经q研I发玎ͼ实是目录的问题Q括可pl/sql不爽了。于是乎Qpl/sql让我也不爽了Q。?/p>

记录下,解决了,现在很爽。?/p>

 

PSQ如果遇到此问题Q不用重装pl/sqlQ只需其UdQ最好copyQ到其他没有I格Q没有特D字W的目录下就ok了!



kxbin 2013-04-16 16:25 发表评论
]]>
linux oracle10g安装http://www.tkk7.com/kxbin/articles/388272.htmlkxbinkxbinFri, 21 Sep 2012 08:49:00 GMThttp://www.tkk7.com/kxbin/articles/388272.htmlhttp://www.tkk7.com/kxbin/comments/388272.htmlhttp://www.tkk7.com/kxbin/articles/388272.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/388272.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/388272.html一、安装系l?/strong>
首先安装LinuxpȝQ根据Oracle官方文的徏议,在机器内存小?G的情况下Qswap分区大小应该讄为内存的2倍大Q若内存大于2G则swap分区讄Z内存大小一栗?/div>
为防止Oracle安装q程中出Cؕ码,使用英文作ؓpȝ语言Q进行Oracle的安装工?/div>
二、安装Oracle前的pȝ准备工作
1.查需要的软g?/strong>
可以使用rpm -qa|grep 软g包关键词命oq行,一般情况下会需要手动安装如下的软g包:
  From RedHat AS5 Disk 1Q?2 BitQ?/div>
  # rpm -Uvh setarch-2* 
  # rpm -Uvh make-3* 
  # rpm -Uvh glibc-2* 
  # rpm -Uvh libaio-0*
  From RedHat AS5 Disk 2Q?2 BitQ?/div>
  # rpm -Uvh compat-libstdc -33-3* 
  # rpm -Uvh compat-gcc-34-3* 
  # rpm -Uvh compat-gcc-34-c -3* 
  # rpm -Uvh gcc-4* 
  # rpm -Uvh libXp-1*
  From RedHat AS5 Disk 3Q?2 BitQ?/div>
  # rpm -Uvh openmotif-2* 
  # rpm -Uvh compat-db-4*
如果使用DVD安装介质的话Q会很方ѝ?/div>
2.修改Linux发行版本信息
׃Oracle 10g发行的时候,RedHat Enterprise Linux 5没有发行Q所以Oracle 10gq没有对RedHat Enterprise Linux 5认支持Q我们有两种Ҏ可以让Oracle 10g支持RedHat Enterprise Linux 5?/div>
Ҏ一Q?/strong>
我们需要手工修改Linux的发行注讎ͼ让Oracle 10g支持RedHat Enterprise Linux 5?/div>
~辑/etc/redhat-release文g
# vi /etc/redhat-release
其中的内容Red Hat Enterprise Linux Server release 5 (Tikanga)修改为Red Hat Enterprise Linux AS release 4 (Nahant Update 4)
Ҏ二:
q有文章说修改Oracle安装包中install/oraparam.ini文g的内容,也可以让Oracle 10g支持RedHat Enterprise Linux 5Q修Ҏ法如下:
# vi install/oraparam.ini
在其中的Certified VersionsD落增加redhat-5
#[Certified Versions] 
Linux=redhat-3,SuSE-9,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2]
再添?nbsp;
[Linux-redhat-5.0-optional] 
TEMP_SPACE=80 
SWAP_SPACE=150 
MIN_DISPLAY_COLORS=256
l我试Q发现方法二在安装之前的pȝ过E可以通过Q但是在安装q程中的pȝ支持无法通过Q不知道是不是我讄的有问题Q希望有高手可以l我ҎC?/div>
3.修改pȝ内核参数
# vi /etc/sysctl.conf
kernel.shmall = 2097152                    //  该参数表C系l一ơ可以用的׃n内存总量Q以ؓ单位Q。缺省值就?097152Q通常不需要修改kernel.shmmax = 2147483648            //  该参数定义了׃n内存D늚最大尺寸(以字节ؓ单位Q。缺省ؓ32MQ对于oracle来说Q该~省值太低了Q通常其讄?G 
kernel.shmmni = 4096                       //  q个内核参数用于讄pȝ范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更?nbsp;
kernel.sem = 250 32000 100 128        //  表示讄的信号量 
fs.file-max = 65536                            //  表示文g句柄的最大数量。文件句柄设|表C在linuxpȝ中可以打开的文件数?nbsp;
net.ipv4.ip_local_port_range = 1024 65000 
net.core.rmem_default=262144        //  默认的接收窗口大?nbsp;
net.core.rmem_max=262144             //  接收H口的最大大?nbsp;
net.core.wmem_default=262144      //  默认的发送窗口大?nbsp;
net.core.wmem_max=262144           //  发送窗口的最大大?/div>
修改好内核参数后Q执行如下命令新的讄生效
# /sbin/sysctl -p
4.创徏Oracle用户、组、安装目?/strong>
在这里我只讨论单L环境Q不考虑RAC环境的配|,在以后我会专门写一如何配|Oracle RAC环境的文章?/div>
(1) 创徏Oracle用户l?/div>
# groupadd oinstall 
# groupadd dba
(2) 创徏Oracle用户
# useradd -m -g oinstall -G dba oracle
(3) 讄Oracle用户口o
# passwd oracle
(4) 创徏Oracle安装目录以及数据存放目录
# mkdir -p /DBSoftware/app/oracle 
# mkdir -p /DBData/oradata
(5) 修改目录权限
# chown -R oracle:oinstall /DBSoftware/app/oracle/ /DBData/oradata/ 
# chmod -R 755 /DBSoftware/app/oracle/ /DBData/oradata/
5.d以下内容?etc/security/limits.conf
# vi /etc/security/limits.conf
oracle soft nproc 2047 
oracle hard nproc 16384 
oracle soft nofile 1024 
oracle hard nofile 65536
6.d以下内容?etc/pam.d/login
# vi /etc/pam.d/login
session required /lib/security/pam_limits.so 
session required pam_limits.so
7.d以下内容?etc/profile
# vi /etc/profile
if [ $USER = "oracle" ]; then 
    if [ $SHELL = "/bin/ksh" ]; then 
        ulimit -p 16384 
        ulimit -n 65536 
    else 
        ulimit -u 16384 -n 65536 
    fi 
fi
8.配置LinuxL
?etc/hosts文g中是否有localhost的记录(指向127.0.0.1卛_Q,若没有的话,在后面配|Oracle监听的时候会出现一些问题,D无法启动监听Q在此手工添加此记录卛_?/div>
9.配置oracle用户环境变量
# su - oracle 
$ vi ~/.bash_profile
增加如下内容Q?/div>
export ORACLE_BASE=/DBSoftware/app/oracle   // 上面创徏的Oracle安装文g?nbsp;
export ORACLE_SID=orcl 
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin 
export LD_LIBARY_PATH=$ORACLE_HOME/lib
export PATH 
umask 022
保存后用如下命令,使设|生效:
$ source ~/.bash_profile
三、安装OracleQƈq行相关讄
1.解压~安装文?/strong>
Oracle的安装包有这样几U格式:
(1) zip      10201_database_linux32.zip
q种格式最好解压羃Q直接用命令unzip 文g名即?/div>
(2) cpio.gz
q种格式有这样几U解压羃方式
a.  # zcat XXXX.cpio.gz | cpio -idmv 
b.  # gunzip XXXX.cpio.gz解压出XXXX.cpio文g然后?# cpio -idvm < XXXX.cpio
解压~完成后Q设|oracle帐户可以操作安装文g所在的目录
chown -R oracle:oinstall 安装文g所在目?/div>
2. 用oracle帐户q入安装文g所在目录,执行如下命o卛_看到安装界面Q?/strong>
$ ./runInstaller
如果无法看到安装界面Q请使用root帐户执行如下命o后再q行安装E序Q?/div>
# export DISPLAY=:0.0 
# xhost + 
$ ./runInstaller
出现安装界面后,Ҏ界面提示q行相关的设|,我的是在安装q程中不创徏数据库,只安装程序,监听和创建数据库{安装完成后再进行相关的操作?/div>
安装q程中,需要用root权限执行两个脚本?/div>
 

 

   

 

3. 安装完成后,?etc/redhat-release文g中的内容修改回Red Hat Enterprise Linux Server release 5 (Tikanga)
4.创徏监听以及创徏数据?/strong>
(1) 创徏监听E序
使用Oracle提供的NET CONFIGURATION ASSISTANT创徏TNS监听
$ netca
基本上就是一直Next可以了Q当然你也可以在q期间修改TNS的监听端口号
TNS监听创徏完成后可以用如下命令进行检查:
# netstat -atln    查监听端口是否打开 
$ lsnrctl status    查TNS监听状?/div>
认监听已经成功启动后,卛_执行Database Configure Assistantq行数据库的创徏Q执行命令如下:
$ dbca
在创建数据库的过E中Q徏议将数据库的字符集设|ؓUnicode UTF-8Q防止出Cؕ码?/div>
四、数据库的启动脚本(转蝲?a style="padding: 0px; margin: 0px; color: #015f91; text-decoration: none; ">[url]http://82584.blog.51cto.com/72584/110131[/url]Q?/strong>
# vi /etc/rc.d/init.d/oracle
================================ Script File Start ================================ 
 
#!/bin/bash 

# chkconfig: 35 95 1 
# description: init script to start/stop oracle database 10g, TNS listener, EMS 
# match these values to your environment:
export ORACLE_BASE=/DBSoftware/app/oracle 
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=/u01/app/oracle/bin:$ORACLE_HOME/bin:$PATH 
export ORACLE_SID=orcl 
export ORACLE_USER=oracle
# see how we are called: 
case $1 in 
    start) 
        su - "$ORACLE_USER"<<EOO 
        lsnrctl start 
        sqlplus /nolog<<EOS 
        connect / as sysdba 
        startup 
    EOS 
    emctl start dbconsole 
    EOO 
    touch /var/lock/subsys/$scriptname 
    ;; 
    stop) 
        su - "$ORACLE_USER"<<EOO 
        lsnrctl stop 
        sqlplus /nolog<<EOS 
        connect / as sysdba 
        shutdown immediate 
    EOS 
    emctl stop dbconsole 
    EOO 
    rm -f /var/lock/subsys/scriptname 
    ;; 
*) 
echo "Usage: $0 {start|stop}" 
;; 
esac
================================ Script File End ================================
授权 Qchown root.root /etc/rc.d/init.d/oracle
修改文g属性:chmod 755 /etc/rc.d/init.d/oracle
以后启动/关闭Oracle可以使用如下命o操作Q?/div>
# service oracle start     //  启动监听、数据库以及em 
# service oracle stop      //  关闭监听、数据库以及em
当然你也可以把Oracle作ؓpȝ服务Q随pȝ启动{等?/div>


kxbin 2012-09-21 16:49 发表评论
]]>
ORACLE锁机?/title><link>http://www.tkk7.com/kxbin/articles/388188.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Thu, 20 Sep 2012 07:25:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/388188.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/388188.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/388188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/388188.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/388188.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">数据库是一个多用户使用的共享资源。当多个用户q发地存取数据时Q在数据库中׃产生多个事务同时存取同一数据的情c若对ƈ发操作不加控制就可能会读取和存储不正的数据Q破坏数据库的一致性?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">加锁是实现数据库q发控制的一个非帔R要的技术。当事务在对某个数据对象q行操作前,先向pȝ发出hQ对其加锁。加锁后事务对该数据对象有了一定的控制Q在该事务释N之前Q其他的事务不能Ҏ数据对象q行更新操作?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">在数据库中有两种基本的锁cdQ排它锁QExclusive LocksQ即X锁)和共享锁QShare LocksQ即S锁)。当数据对象被加上排它锁Ӟ其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务dQ但不能修改。数据库利用q两U基本的锁类型来Ҏ据库的事务进行ƈ发控制?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">Oracle数据库的锁类?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">Ҏ保护的对象不同,Oracle数据库锁可以分ؓ以下几大c:DML锁(data locksQ数据锁Q,用于保护数据的完整性;DDL锁(dictionary locksQ字兔RQ,用于保护数据库对象的l构Q如表、烦引等的结构定义;内部锁和闩(internal locks and latchesQ,保护 数据库的内部l构?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">DML锁的目的在于保证q发情况下的数据完整性,。在Oracle数据库中QDML锁主要包括TM锁和TX锁,其中TM锁称U锁QTX锁称Z务锁或行U锁?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">当Oracle执行DML语句Ӟpȝ自动在所要操作的表上甌TMcd的锁。当TM锁获得后Q系l再自动甌TXcd的锁Qƈ实际锁定的数据行的锁标志位q行|位。这样在事务加锁前检查TX锁相Ҏ时׃用再逐行查锁标志Q而只需查TM锁模式的相容性即可,大大提高了系l的效率。TM锁包括了SS、SX、S、X {多U模式,在数据库中用0Q?来表C。不同的SQL操作产生不同cd的TM锁?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">在数据行上只有X锁(排他锁)。在Oracle数据库中Q当一个事务首ơ发起一个DML语句时就获得一个TX锁,该锁保持C务被提交或回滚。当两个或多个会话在表的同一条记录上执行 DML语句ӞW一个会话在该条记录上加锁,其他的会话处于等待状态。当W一个会话提交后QTX锁被释放Q其他会话才可以加锁?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">当Oracle数据库发生TX锁等待时Q如果不及时处理常常会引起Oracle数据库挂P或导致死锁的发生Q生ORA-60的错误。这些现象都会对实际应用产生极大的危宻I如长旉未响应,大量事务p|{?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">悲观锁和乐观封?nbsp;<br />一、悲观封?nbsp;<br />锁在用户修改之前发挥作用: <br />Select ..for updateQnowait) <br />Select * from tab1 for update <br />用户发出q条命o之后Qoracle会对返回集中的数据建立行񔞮锁Q以防止其他用户的修攏V?nbsp;<br />如果此时其他用户对上面返回结果集的数据进行dml或ddl操作都会q回一个错误信息或发生d?nbsp;<br />1Q对q回l果集进行update或delete操作会发生阻塞?nbsp;<br />2Q对该表q行ddl操作会报:Ora-00054:resource busy and acquire with nowait specified.</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">原因分析 <br />此时Oracle已经对返回的l果集上加了排它的行U锁Q所有其他对q些数据q行的修Ҏ删除操作都必ȝ待这个锁的释放,产生的外在现象就是其他的操作发生阻塞,q个q个操作commit或rollback. <br />同样q个查询的事务将会对该表加表U锁Q不允许对该表的Mddl操作Q否则将会报出ora-00054错误Q?resource busy and acquire with nowait specified.</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">二、乐观封?nbsp;<br />乐观的认为数据在select出来到updateq取q提交的q段旉数据不会被更攏V这里面有一U潜在的危险是׃被选出的结果集q没有被锁定Q是存在一U可能被其他用户更改的可能。因此Oracle仍然是用悲观锁Q因样会更安全?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; "><br />d</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">定义Q?nbsp;<br />当一个会话保持另一个会话正在请求的资源上的锁定Ӟ׃发生d。被d的会话将一直挂P直到持有锁的会话攑ּ锁定的资源ؓ止?个常见的dml语句会生阻?nbsp;<br />INSERT <br />UPDATE <br />DELETE <br />SELECT…FOR UPDATE</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; "><br />INSERT</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">Insert发生d的唯一情况是用户拥有一个徏有主键约束的表。当2个的会话同时试图向表中插入相同的数据Ӟ其中的一个会话将被阻塞,直到另外一个会话提交或会滚。一个会话提交时Q另一个会话将收到主键重复的错误。回滚时Q被d的会话将l箋执行?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">UPDATE 和DELETE当执行Update和delete操作的数据行已经被另外的会话锁定Ӟ会发生dQ直到另一个会话提交或会滚?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">Select …for update</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">当一个用户发出select..for update的错作准备对q回的结果集q行修改Ӟ如果l果集已l被另一个会话锁定,是发生d。需要等另一个会话结束之后才可l执行。可以通过发出 select… for update nowait的语句来避免发生dQ如果资源已l被另一个会话锁定,则会q回以下错误QOra-00054:resource busy and acquire with nowait specified.</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">死锁-deadlock</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">定义:当两个用户希望持有对方的资源时就会发生死? <br />即两个用户互相等待对斚w放资源时,oracle认定Z生了死锁,在这U情况下,以牺牲一个用户作Z?另一个用Ll执?牺牲的用L事务回? <br />例子Q?nbsp;<br />1Q用?对A表进行UpdateQ没有提交?nbsp;<br />2Q用?对B表进行UpdateQ没有提交?nbsp;<br />此时双反不存在资源共享的问题?nbsp;<br />3Q如果用?此时对A表作update,则会发生dQ需要等到用户一的事物结束?nbsp;<br />4Q如果此时用?又对B表作updateQ则产生死锁。此时Oracle会选择其中一个用戯行会滚,使另一个用Ll执行操作?nbsp;<br />起因: <br />Oracle的死锁问题实际上很少见,如果发生Q基本上都是不正的E序设计造成的,l过调整后,基本上都会避免死锁的发生?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">DML锁分c表</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; "><br />?Oracle的TM锁类?nbsp;<br />锁模?锁描q?解释 SQL操作 <br />0 none <br />1 NULL I?Select <br />2 SS(Row-S) 行׃n锁,其他对象 <br />只能查询q些数据?Select for update、Lock for</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">update、Lock row share</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">3 SX(Row-X) 行排它锁, <br />在提交前不允许做DML操作 Insert、Update?nbsp;<br />Delete、Lock row share</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">4 S(Share) ׃n?Create index、Lock share <br />5 SSX(S/Row-X) ׃n行排它?Lock share row exclusive <br />6 X(Exclusive) 排它?Alter table、Drop able、Drop index、Truncate table 、Lock exclusive</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">oracle 锁问题的解决</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; "><br />可以用Spotlight软gҎ据库的运行状态进行监控?/p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">当出现session锁时Q我们要及时q行处理.</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">1. 查看哪些session? <br />SQL语句Qselect 'alter system kill session '''||sid||','||serial#||''';' from v$session where sid in (select sid from v$lock where block = 1);</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">SQL> select 'alter system kill session '''||sid||','||serial#||''';' from v$session where sid in (select sid from v$lock where block = 1); <br />'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||''';' <br />-------------------------------------------------------------------------------- <br />alter system kill session '132,731'; <br />alter system kill session '275,15205'; <br />alter system kill session '308,206'; <br />alter system kill session '407,3510';</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">2. 查看session? <br />sql语句Qselect s.sid, q.sql_text from v$sqltext q, v$session s <br />where q.address = s.sql_address <br />and s.sid = &sid <br />order by piece;</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">SQL> select s.sid,q.sql_text from v$sqltext q, v$session s where q.address = s.sql_address and s.sid in (select sid from v$lock where block = 1) order by piece; <br />        SID SQL_TEXT <br />---------- ---------------------------------------------------------------- <br />       77 UPDATE PROFILE_USER SET ID=1,COMPANY_ID=2,CUSTOMER_ID=3,NAMED   <br />       77 _INSURED_ID=4,LOGIN=5,ROLE_ID=6,PASSWORD=7,EMAIL=8,TIME_ZON <br />       77 E=9 WHERE PROFILE_USER.ID=:34 <br />3 rows selected.</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; "><br />3. kill锁的q程. <br />SQL语句Qalter system kill session '77,22198';</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">SQL> alter system kill session '391,48398'; <br />System altered.</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">4. 查看谁锁了谁?br />select s1.username || [email='@']'@'[/email] || s1.machine<br />  || ' ( SID=' || s1.sid || ' )  is blocking '<br />  || s2.username || [email='@']'@'[/email] || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status<br />  from v$lock l1, v$session s1, v$lock l2, v$session s2<br />  where s1.sid=l1.sid and s2.sid=l2.sid<br />  and l1.BLOCK=1 and l2.request > 0<br />  and l1.id1 = l2.id1<br />  and l2.id2 = l2.id2 ;</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">注: <br />> Q?重定向输出,文件的标准输出重新定向输出到文Ӟ或将数据文g作ؓ另一E序的标准输入内宏V?nbsp;<br />| QUNIX道Q将一文g的输Z为另一文g的输?</p><p style="color: #333333; font-family: Verdana, Arial, sans-serif, 'Lucida Grande'; font-size: 13px; line-height: 23px; background-color: #d6d3d6; ">在执行SQL语句试:alter system kill session '391,48398'(sid?91); 应当注意对于sid?00以下的应当}慎,可能该进E对应某个applicationQ如对应某个事务,可以kill.</p><div></div><img src ="http://www.tkk7.com/kxbin/aggbug/388188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-20 15:25 <a href="http://www.tkk7.com/kxbin/articles/388188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 数据库实例启动关闭过E?/title><link>http://www.tkk7.com/kxbin/articles/388185.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Thu, 20 Sep 2012 06:59:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/388185.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/388185.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/388185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/388185.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/388185.html</trackback:ping><description><![CDATA[     摘要: 转蝲自http://blog.csdn.net/robinson_0612/article/details/5542983-->Oracle 数据库实例启动关闭过E?-================================/*    Oracle数据库实例的启动Q严格来说应该是实例的启动,数据库仅仅是在实例启动后q行装蝲。Oracl...  <a href='http://www.tkk7.com/kxbin/articles/388185.html'>阅读全文</a><img src ="http://www.tkk7.com/kxbin/aggbug/388185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-20 14:59 <a href="http://www.tkk7.com/kxbin/articles/388185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE常用命ohttp://www.tkk7.com/kxbin/articles/388010.htmlkxbinkxbinTue, 18 Sep 2012 10:01:00 GMThttp://www.tkk7.com/kxbin/articles/388010.htmlhttp://www.tkk7.com/kxbin/comments/388010.htmlhttp://www.tkk7.com/kxbin/articles/388010.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/388010.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/388010.html阅读全文

kxbin 2012-09-18 18:01 发表评论
]]>
Oracle同义词创建及其作?/title><link>http://www.tkk7.com/kxbin/articles/388003.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Tue, 18 Sep 2012 09:46:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/388003.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/388003.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/388003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/388003.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/388003.html</trackback:ping><description><![CDATA[<p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">Oracle的同义词QsynonymsQ从字面上理解就是别名的意思,和试囄功能cMQ就是一U映关pR本文介l如何创建同义词语句Q删除同义词以及查看同义词语句?br />  oracle的同义词ȝQ?br />  从字面上理解是别名的意思,和试囄功能cM。就是一U映关pR?br />  1.创徏同义词语句:</p><p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">  create public synonym table_name for user.table_name;</p><p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">  其中W一个user_table和第二个user_table可以不一栗?br />  此外如果要创Z个远E的数据库上的某张表的同义词Q需要先创徏一个Database Link(数据库连?来扩展访问,然后在用如下语句创建数据库同义词:create synonym table_name for<a href="mailto:table_name@DB_Link" style="color: #333333; text-decoration: none; ">table_name@DB_Link</a>;<br />  当然Q你可能需要在user用户中给当前用户(user2)授权Q?grant select/delete/update on user2<br />  2.删除同义词:</p><p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">  drop public synonym table_name;</p><p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">  3.查看所有同义词Q?/p><p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">  select * from dba_synonyms</p><p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">  同义词拥有如下好处:节省大量?a target="_blank" style="color: #333333; text-decoration: none; ">数据?/a>I间Q对不同用户的操作同一张表没有多少差别;扩展的数据库的用范_能够在不同的数据库用户之间实现无~交?同义词可以创建在不同一个数据库服务器上Q通过|络实现q接?br /> <a target="_blank" style="color: #333333; text-decoration: none; ">Oracle</a>数据库中提供了同义词理的功能。Oracle同义词是数据库方案对象的一个别名,l常用于化对象访问和提高对象讉K的安全性?br />ADQ?br /> <span style="text-indent: 2em; ">在Oracle中对用户的管理是使用权限的方式来理的,也就是说Q如果我们想使用数据库,我们必d有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的Q但是我们必要已授权的表的名称前键入该表所有者的名称Q所以这是比较ȝ的,遇到q种情况Q我们该怎么办呢Q创ZOracle同义词吧Q这h们就可以直接使用同义词来使用表了?/span></p><p style="border-width: 0px; padding: 0px; margin: 0px 0px 8px; list-style: none; text-indent: 2em; color: #333333; font-family: 宋体; line-height: 28px; background-color: #ffffff; ">1.同义词的概念<br />Oracle数据库中提供了同义词理的功能。同义词是数据库Ҏ对象的一个别名,l常用于化对象访问和提高对象讉K的安全性。在使用同义词时QOracle数据库将它翻译成对应Ҏ对象的名字。与视图cMQ同义词q不占用实际存储I间Q只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过E、包{等Q数据库理员都可以Ҏ实际情况Z们定义同义词?br />2.Oracle同义词的分类<br />Oracle同义词有两种cdQ分别是公用Oracle同义词与U有Oracle同义词?br />1)公用Oracle同义?׃个特D的用户lPublic所拥有。顾名思义Q数据库中所有的用户都可以用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,q些对象往往大家都需要引用?br />2)U有Oracle同义?它是跟公用同义词所对应Q他是由创徏他的用户所有。当Ӟq个同义词的创徏者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词?br />3.Oracle同义词创建及删除<br />创徏公有Oracle同义词的语法QCreate [public] synonym 同义词名U?for [username.]objectNameQ?br />Drop [public] synonym 同义词名U?br />4.Oracle同义词的作用<br />1) 多用户协同开发中Q可以屏蔽对象的名字及其持有者。如果没有同义词Q当操作其他用户的表Ӟ必须通过user?object名的形式Q采用了Oracle同义词之后就可以隐蔽掉user名,当然q里要注意的是:public同义词只是ؓ数据库对象定义了一个公q别名Q其他用戯否通过q个别名讉Kq个数据库对象,q要看是否已lؓq个用户授权?br />2) 为用L化sql语句。上面的一条其实就是一U简化sql的体玎ͼ同时如果自己建的表的名字很长Q可以ؓq个表创Z个Oracle同义词来化sql开发?br />3)为分布式数据库的q程对象提供位置透明性?br />5.Oracle同义词在数据库链中的作用<br />数据库链是一个命名的对象Q说明一个数据库到另一个数据库的\径,通过其可以实C同数据库之间的通信?br />Create database link 数据库链?connect  to  user?identified by 口o  using ‘Oracleq接?#8217;; 讉K对象要通过 object名@数据库链名。同义词在数据库链中的作用就是提供位|透明性?/p><img src ="http://www.tkk7.com/kxbin/aggbug/388003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-18 17:46 <a href="http://www.tkk7.com/kxbin/articles/388003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle创徏database linkȝhttp://www.tkk7.com/kxbin/articles/388002.htmlkxbinkxbinTue, 18 Sep 2012 09:36:00 GMThttp://www.tkk7.com/kxbin/articles/388002.htmlhttp://www.tkk7.com/kxbin/comments/388002.htmlhttp://www.tkk7.com/kxbin/articles/388002.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/388002.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/388002.html物理上存放于|络的多个ORACLE数据库,逻辑上可以看成一个单一的大型数?库,用户可以通过|络对异地数据库中的数据q行存取Q而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的,开发h员无需兛_|络的链接细 节、数据在|络节点中的具体分布情况和服务器间的协调工作q程?/p>

数据库之间的链接建立在DATABASE LINK上。要创徏一个DATABASE LINKQ必首先在建立链接的数据库上设|链接字W串Q即配置一个远E数据库的本地网l服务名?/p>

链接字符串的配置参见《客Lq接服务器》一节?/p>

数据库全局名称可以用以下命令查出:

SELECT * FROM GLOBAL_NAME;

修改可以用以下语句来修改参数|

ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

<1>、当数据库参数global_name=falseӞ׃要求数据库链接名U跟q端数据库名UC栗?/p>

oracle数据库之间进行连接通讯?br />创徏数据库链接的语法如下Q?nbsp;
CREATE [PUBLIC] DATABASE LINK link

CONNECT TO username IDENTIFIED BY password

USING ‘connectstring’

其中Q?br />--demona为用net8 easy config创徏的连接字W串
目的Ҏ据库的init.ora文g中的global_names设ؓfalse
重新启动数据库设|才能生?br />或者用sys用户执行

注意Q创建数据库链接的帐号必LCREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系l权限,用来d到远E数据库的帐号必LCREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)?/p>

一个公用数据库链接对于数据库中的所有用户都是可用的Q而一个私有链接仅对创建它的用户可用。由一个用L另外一个用h权私有数据库链接是不可能的,一个数据库链接要么是公用的Q要么是U有的?/p>

创徏数据库链接时Q还可以使用~省d方式Q即不指定远E数据库的用户名和密码:

create public database link zrhs_link

using ‘zrhs’;

在不指定用户名和口o的情况下QORACLE使用当前的用户名和口令登录到q程数据库?/p>

USING后面指定的是链接字符Ԍ也就是远E数据库的网l服务名Q这个服务名保存在TNSNAMES.ORA文g中,在该文g中定义了协议、主机名、端口和数据库名?/p>

删除数据库链接的语句是:

DROP [PUBLIC] DATABASE LINK zrhs_link

数据库链接的引用

一般情况下引用数据库链接,可以直接其攑ֈ调用的表名或视图名称后面Q中间用一?@ 作ؓ分割W:

SELECT * FROM worker@zrhs_link ;

对于l常使用的数据库链接Q可以徏立一个本地的同义词,方便使用Q?/p>

CREATE SYNONYM worker_syn FOR worker@zrhs_link ;

q可以徏立一个本地的q程视图Q方便用:

CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where… ;

现在本视囑֏与本地数据库中的M其它视图一样对待,也可以授权给其它用户Q访问此视图Q但该用户必L讉K数据库链接的权限?/p>

对于另外一U情况,所要访问的表不在数据库链接中指定的q程帐户下,但该帐户有访问该表的权限Q那么我们在表名前要加上该表的用户名Q?/p>

SELECT * FROM camel.worker@zrhs_link ;

<2>、当数据库参数global_name=trueӞ那就要求数据库链接名U跟q端数据库名UC?br />数据库全局名称可以用以下命令查?/p>

SELECT * FROM GLOBAL_NAME;

atabase link(dblink)--数据库链?br />创徏dblink的语法:
sql>create database link 数据库链路名
connect to 用户?identified by 口o
using 'L字符串名';
 
如:
sql>create database link ora9i.us.oracle.com ### q里的us.oracle.com为oracle默认域名 ###
connect to scott identified by tiger
using 'sun';

1)dblink名必Mq程数据库的全局数据库名Qglobal_nameQ相同;
2)用户名,口oE数据库用户名,口o;
3)L字符串ؓ本机tnsnames.ora中定义的?
4)两个同名的数据库间不得徏立dblink;
然后Q你可以通过dblink讉Kq程数据库了?br />如:
sql>select * from 表名@ora9i.us.oracle.com;
q可以徏立快?snapshot)通过dblink实现q程数据自动传输?/p>

查看所有的数据库链接,q入pȝ理员SQL>操作W下Q运行命令: 

SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';



kxbin 2012-09-18 17:36 发表评论
]]>
使用INSERT语句向表中插入数据(MSSQLSERVER版)http://www.tkk7.com/kxbin/articles/387989.htmlkxbinkxbinTue, 18 Sep 2012 07:09:00 GMThttp://www.tkk7.com/kxbin/articles/387989.htmlhttp://www.tkk7.com/kxbin/comments/387989.htmlhttp://www.tkk7.com/kxbin/articles/387989.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387989.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387989.html阅读全文

kxbin 2012-09-18 15:09 发表评论
]]>
ORACLE SQLQ经典查询练手第五篇http://www.tkk7.com/kxbin/articles/387986.htmlkxbinkxbinTue, 18 Sep 2012 07:05:00 GMThttp://www.tkk7.com/kxbin/articles/387986.htmlhttp://www.tkk7.com/kxbin/comments/387986.htmlhttp://www.tkk7.com/kxbin/articles/387986.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387986.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387986.html阅读全文

kxbin 2012-09-18 15:05 发表评论
]]>
ORACLE SQLQ经典查询练手第四篇http://www.tkk7.com/kxbin/articles/387984.htmlkxbinkxbinTue, 18 Sep 2012 07:04:00 GMThttp://www.tkk7.com/kxbin/articles/387984.htmlhttp://www.tkk7.com/kxbin/comments/387984.htmlhttp://www.tkk7.com/kxbin/articles/387984.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387984.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387984.html阅读全文

kxbin 2012-09-18 15:04 发表评论
]]>
ORACLE SQLQ经典查询练手第三篇http://www.tkk7.com/kxbin/articles/387983.htmlkxbinkxbinTue, 18 Sep 2012 07:03:00 GMThttp://www.tkk7.com/kxbin/articles/387983.htmlhttp://www.tkk7.com/kxbin/comments/387983.htmlhttp://www.tkk7.com/kxbin/articles/387983.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387983.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387983.html阅读全文

kxbin 2012-09-18 15:03 发表评论
]]>
ORACLE SQLQ经典查询练手第二篇http://www.tkk7.com/kxbin/articles/387981.htmlkxbinkxbinTue, 18 Sep 2012 07:02:00 GMThttp://www.tkk7.com/kxbin/articles/387981.htmlhttp://www.tkk7.com/kxbin/comments/387981.htmlhttp://www.tkk7.com/kxbin/articles/387981.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387981.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387981.html阅读全文

kxbin 2012-09-18 15:02 发表评论
]]>
ORACLE SQLQ经典查询练手第一?/title><link>http://www.tkk7.com/kxbin/articles/387980.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Tue, 18 Sep 2012 07:01:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/387980.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/387980.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/387980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/387980.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/387980.html</trackback:ping><description><![CDATA[     摘要: 本文使用的实例表l构与表的数据如下:scott.emp员工表结构如下:Name     Type         Nullable Default Comments -------- ------------ ...  <a href='http://www.tkk7.com/kxbin/articles/387980.html'>阅读全文</a><img src ="http://www.tkk7.com/kxbin/aggbug/387980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-18 15:01 <a href="http://www.tkk7.com/kxbin/articles/387980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle常见问题(401-500)http://www.tkk7.com/kxbin/articles/387661.htmlkxbinkxbinThu, 13 Sep 2012 09:28:00 GMThttp://www.tkk7.com/kxbin/articles/387661.htmlhttp://www.tkk7.com/kxbin/comments/387661.htmlhttp://www.tkk7.com/kxbin/articles/387661.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387661.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387661.html401. V$PQ_TQSTAT 
包含q行执行操作上的l计?/span>.帮助在一个查询中定不^衡的问题?/span>


402. V$PROCESS 
包含关于当前zdq程的信息?/span>


403. V$PROXY_ARCHIVEDLOG 
包含归日志备䆾文g的描qC息,q些备䆾文g带有一个称?/span>PROXY副本的新特征?/span>


404. V$PROXY_DATAFILE 
包含数据文g和控制文件备份的描述信息Q这些备份文件带有一个称?/span>PROXY副本的新特征?/span>


405. V$PWFILE_USERS 
列出被授?/span>SYSDBA?/span>SYSOPERҎ的用戗?/span>


406. V$PX_PROCESS 
包含正在q行q行操作的会话的信息?/span>


407. V$PX_PROCESS_SYSSTAT 
包含正在q行q行操作的会话的信息?/span>


408. V$PX_SESSION 
包含正在q行q行操作的会话的信息?/span>


409. V$PX_SESSTAT 
包含正在q行q行操作的会话的信息?/span>


410. V$QUEUE 
包含多线E消息队列的信息?/span>


411. V$QUEUEING_MTH 
昄所有可用的查询资源分配Ҏ?/span>


412. V$RECOVER_FILE 
昄需要介质恢复的文g状态?/span>


413. V$RECOVERY_FILE_STATUS 
包含Ҏ个恢复命令的每一数据文g的一行信息?/span>


414. V$RECOVERY_LOG 
列出需要完成介质恢复的归日志的信?/span>.q个信息来自V$LOG_HISTORY


415. V$RECOVERY_PROCESS 
能够用来跟踪数据库恢复操作,以便他们不会被终止执行?/span> 
也用来估进E中完成q个操作所需的时间?/span>


416. V$RECOVERY_STATUS 
包含当前恢复q程的统计量?/span>


417. V$REQDIST 
列出MTS调度E序hơ数的直方图的统计量?/span>

418. V$RESERVED_WORDS 
l出PL/SQL~译器所使用的关键字的列表?/span>


419. V$RESOURCE 
包含资源名和地址信息?/span>


420. V$RESOURCE_LIMIT 
昄pȝ资源的全局资源使用的信息?/span>

 
421. V$ROLLNAME 
列出所有联机回滚段的信息?/span>


422. V$ROLLSTAT 
包含回滚D늚l计量?/span>


423. V$ROWCACHE 
昄zd数据字典的统计量?/span>


424. V$ROWCACHE_PARENT 
昄数据字典中所有双亲对象的信息?/span>


425. V$ROWCACHE_SUBORDINATE 
昄数据字典中从属对象的信息?/span>


426. V$RSRC_CONSUMER_GROUP 
昄与当前活动资源消费者用L相关联的数据?/span>


427. V$RSRC_CONSUMER_GROUP_CPU_MTH 
源消费者用L昄所有可用的资源的分配方法?/span>


428. V$RSRC_PLAN 
昄当前所有活动资源方案的名称?/span>


429. V$RSRC_PLAN_CPU_MTH 
昄所有用于资源方案的可用CPU资源分配Ҏ?/span>


430. V$SESS_IO 
为每个用户会话列?/span>I/Ol计?/span>


431. V$SESSION 
列出当前每一个会话的会话信息?/span>


432. V$SESSION_CONNECT_INFO 
昄当前会话的网l连接的信息?/span>


433. V$SESSION_CURSOR_CACHE 
昄当前会话的游标用法的信息?/span>

 
434. V$SESSION_EVENT 
列出一个会话在{待一个事件的信息?/span>


435. V$SESSION_LONGOPS 
昄一个长旉q行操作的状态?/span>


436. V$SESSION_OBJECT_CACHE 
昄本地服务器上当前用户对话的对象高速缓存的l计量?/span>


437. V$SESSION_WAIT 
列出正在{待的活动会话的资源或事件?/span>


438. V$SESSTAT 
列出用户会话l计量?/span>


439. V$SGA 
包含pȝ全局区的ȝ计量?/span>

 
440. V$SGASTAT 
包含pȝ全局区的详细信息?/span>


441. V$SHARED_POOL_RESERVED 
列出能帮助你调节׃n池中保留池和I间的统计量?/span>


442. V$SHARED_SERVER 
包含׃n服务器进E的信息?/span>

 
443. V$SHARED_SERVER_MONITOR 
包含调试׃n服务器进E的信息?/span>


444. V$SORT_SEGMENT 
包含一个给定实例中每一个排序段的信息?/span>


445. V$SPPARAMETER 
列出SPFILE的内宏V?/span>


446. V$SQL 
列出SQL׃n区的l计量?/span>


447. V$SQL_BIND_DATA 
如果数据在服务器中可用,它将Ҏ询这个视囄会话所拥有的每个游标中的每一个不同的q接变量Q显C客

L发送的实际q接数据?/span>


448. V$SQL_BIND_METADATA 
Ҏ询这个视囄会话所拥有的每个游标中的每一个不同的q接变量Q显C客L提供的连接元数据?/span>


449. V$SQL_CURSOR 
昄与查询这个视囄会话相关的每一个游标的DEBUG信息?/span>


450. V$SQL_PLAN 
包含装蝲到库~存中每个子游标的执行计划信息?/span>


451. V$SQL_SHARED_CURSOR 
Z么一个特定的子游标没有与存在的子查询的共享的解释?/span>


452. V$SQL_SHARED_MEMEORY 
关于׃n内存快照的游标的信息?/span>


453. V$SQL_REDIRECTION 
标识复位向的SQL语句?/span>


454. V$SQL_WORKAREA 
昄?/span>SQL游标使用的工作区信息?/span>


455. V$SQL_WORKAREA_ACTIVE 
包含当前ql分配的工作区的昫间信息?/span>


456. V$SQLAREA 
׃nSQL的统计量?/span>


457. V$SQLTEXT 
包含SGA中属于共?/span>SQL游标?/span>SQL语句文本?/span>


458. V$SQLTEXT_WITH_NEWLINES 
不能用空g替新行制表符外,?/span>V$SQLTEXT功能一栗?/span>


459. V$STATNAME 
V$SESSTAT?/span>V$SYSTAT表中的统计量的译码统计名字?/span>


460. V$SUBCACHE 
昄当前装蝲于库高速缓存中的从属高速缓存的信息?/span>


461. V$SYSSTAT 
列出pȝl计量?/span>


462. V$SYSTEM_CURSOR_CACHE 
pȝ范围的信息?/span>


463. V$SYSTEM_EVENT 
包含{待一个事件的全部信息?/span>


464. V$SYSTEM_PARAMETER 
包含pȝ参数信息?/span>


465. V$SYSTEM_PARAMETER2 
ORACLE实例中当前媄响的参数和参数的倹{?/span>


466. V$TABLESPACE 
控制文g中表I间的信息?/span>


467. V$TEMP_CACHE_TRANSFER 
昄每个数据文g中探查块的数量?/span>


468. V$TEMP_EXTENT_MAP 
昄所有时表I间的每一个单元的状态信息?/span>


469. V$TEMP_EXTENT_POOL 
昄被一个给定实例用的临时I间~存的状态?/span>


470. V$TEMP_PING 
昄每一个数据文件探查的块数?/span>


471. V$TEMP_SPACE_HEADER 
昄每一个时表I间中每一个文件的聚集信息Q涉及每个空间首部中当前使用多少I间和有多少自由I间?/span>


472. V$TEMPFILE 
昄临时文g的信息?/span>


473. V$TEMPORARY_LOBS 
昄临时?/span>LOB?/span>


474. V$TEMPSTAT 
包含文g?/span>/写的l计信息?/span>


475. V$THREAD 
包含控制文g中的U程信息?/span>


476. V$TIMER 
列出?/span>1%U计的流逝时间?/span>


477. V$TIMEZONE_NAMES 
列出合法的时区名U?/span>


478. V$TRANSACTION 
列出pȝ中的zd事务?/span>


479. V$TRANSACTION_ENQUEUE 
昄事务状态对象所拥有的锁?/span>


480. V$TYPE_SIZE 
列出不同数据库组件的大小Q以便用来估数据块的容量大?/span>


481. V$UNDOSTAT 
昄一个历史统计数据来昄pȝ工作的如何?/span>


482. V$VERSION 
列出ORACLE服务器中核心库组件的版本受?/span>


483. V$VPD_POLICY 
列出与当前在库缓存中的游标相关的所有安全策略?/span>


484. V$WAITSTAT 
列出块竞争统计量 
9I
理的数据字?/span>DBA视图


485. DBA_2PC_NEIGHBORS 
包含未决事务的引入或出的连接信息?/span>


486. DBA_ALL_TABLES 
昄数据库中所有表的描q?/span>


487. DBA_APPLICATION_ROLES 
所有的h函数定义的验证策略的角色?/span>


488. DBA_ASSOCIATIONS 
昄用户定义的统计信息?/span>


489. DBA_AUDIT_EXISTS 
列出AUDIT NOT EXISTS?/span>AUDIT EXISTS产生的审计跟t?/span>


490. DBA_AUDIT_OBJECT 
pȝ中所有对象的审计跟踪记录?/span>


491. DBA_AUDIT_SESSION 
列出关于CONNECT?/span>DISCONNECT的所有审计跟t信息?/span>


492. DBA_AUDIT_STATEMENT 
列出关于GRANTQ?/span>REVOKEQ?/span>AUDITQ?/span>NOAUDITQ?/span>ALTER SYSTEM语句的审计跟t信息?/span>


493. DBA_AUDIT_TRAIL 
列出所有的审计跟踪条目?/span>


494. DBA_BLOCKERS 
列出正有人等待一个会话持有的锁的所有会话,但ƈ非它们自己在{待一个锁?/span>


495. DBA_BASE_TABLE_MVIEWS 
描述数据库中所有的物化视图?/span>


496. DBA_CATALOG 
列出所有数据库标,视图Q同义词和序列?/span>


497. DBA_CLU_COLUMNS 
列出表列到聚集列的映?/span>


498. DBA_CLUSTER_HASH_EXPRESSIONS 
列出所有聚集的散列HASH函数?/span>


499. DBA_CLUSTERS 
包含数据库中所有聚集的描述?/span>


500. DBA_COL_COMMENTS 
所有表和视囄列的注解?/span> 



kxbin 2012-09-13 17:28 发表评论
]]>
oracle常见问题(301-400)http://www.tkk7.com/kxbin/articles/387660.htmlkxbinkxbinThu, 13 Sep 2012 09:27:00 GMThttp://www.tkk7.com/kxbin/articles/387660.htmlhttp://www.tkk7.com/kxbin/comments/387660.htmlhttp://www.tkk7.com/kxbin/articles/387660.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387660.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387660.html301. V$BUFFER_POOL 
昄实例~冲池的信息?/span>

 
302. V$BUFFER_POOL_STATISTICS 
昄实例~冲池的信息?/span>


303. V$CACHE 
包含当前实例?/span>SGA中的每一个块的头部信息?/span>


304. V$CACHE_LOCK 
包含当前实例?/span>SGA中的每一个块的头部信?/span>?/span>V$CACHE非常怼Q?/span> 
除特使^台锁理器标识符号不同外?/span>


305. V$CACHE_TRANSFER 
除了只显C那些被探查了至一ơ的块的信息外,?/span>V$CACHE功能相同?/span>


306. V$CIRCUIT 
包含关于虚电路的信息Q是用户通过调度E序和服务器到数据库的所有连接?/span>


307. V$CLASS_PING 
昄每一个块cM被探查块的数目?/span>


308. V$COMPATIBILITY 
昄数据库实例用的特征Q可以阻止数据库回到早期的版本中厅R?/span>


309. V$COMPATSEG 
昄数据库实例用的怹性特征,可以L数据库回到早期的版本中去?/span>


310. V$CONTEXT 
列出当前对话的设|属性?/span>


311. V$CONTROLFILE 
列出控制文g的名U?/span>


312. V$CONTROLFILE_RECORD_SECTION 
昄控制文g记录部分的信息?/span>


313. V$COPY_CORRUPTION 
昄控制文g中数据文件损坏的信息?/span>


314. V$CR_BLOCK_SERVER 
昄用在~存中块服务器后台进E上的统计信息?/span>


315. V$DATABASE 
包含控制文g中数据库的信息?/span>


316. V$DATAFILE 
包含控制文g中数据库文g的信息?/span>


317. V$DATAFILE_COPY 
包含控制文g中数据库文g副本的信息?/span>


318. V$DATAFILE_HEADER 
昄数据文g头部的数据文件信息?/span>


319. V$DB_CACHE_ADVICE 
Ҏ~存的大估计出物理ȝ数量?/span>


320. V$DB_OBJECT_CACHE 
~存在库~存中的数据库对象?/span>


321. V$DB_PIPES 
昄实例中的׃n池当前描l的道?/span>


322. V$DBFILE 
列出l成数据库的所有数据文件?/span>


323. V$DBLINK 
查询会话所打开的所有数据库q接?/span>


324. V$DELETED_OBJECT 
昄控制文g中被删除归日志?/span>

 
325. V$DISPATCHER 
提供调度q程的信息?/span>


326. V$DISPATCHER_RATE 
度进E提供优质提供速率l计量?/span>


327. V$DLM_ALL_LOCKS 
列出当前所有锁的信息?/span>


328. V$DLM_CONVERT_LOCAL 
本地锁{换操作所消耗的旉?/span>


329. V$DLM_CONVERT_REMOTE 
q程锁{换操作所消耗的旉?/span>


330. V$DLM_LATCH 
它是q时的,参见V$LATCH


331. V$DLM_LOCKS 
q些是锁理器已知的被阻塞或d其它对象的锁信息?/span>


332. V$DLM_MISC 
昄多种DLMl计量?/span>


333. V$DLM_RESS 
昄当前锁管理器已知的全部资源的信息?/span>


334. V$ENABLEDPRIVE 
昄被授予的Ҏ?/span>


335. V$ENQUEUE_LOCK 
昄排队对象所拥有的全部锁?/span>


336. V$EVENT_NAME 
包含{待事g的信息?/span>


337. V$EXECUTION 
昄q行执行中的信息?/span>


338. V$FALSE_PING 
可能得到探查p|的缓冲区?/span>


339. V$FAST_START_SERVERS 
执行q行操作事务恢复的所有从属操作的信息?/span>


340. V$FAST_START_TRANSACTIONS 
恢复中的事务q展信息?/span>


341. V$FILE_CACHE_TRANSFER 
昄每个数据文g中探查的块的数量?/span>


342. V$FILE_PING 
昄每个数据文g被探查的块数目?/span>


343. V$FILESTAT 
包含文g关于?/span>/写统计量信息?/span>


344. V$FIXED_TABLE 
昄数据库中所有动态性能表和视图及导?/span>


345. V$FIXED_VIEW_DEFINITION 
昄所有固定视囄定义?/span>


346. V$GC_ELEMENTS_WITH_COLLISIONS 
可以扑ֈ保护多缓存的锁?/span>

 
347. V$GES_BLOCKING_ENQUEUE 
q些是锁理器已知的被阻塞或d其它对象的锁信息?/span>

 
348. V$GES_CONVERT_LOCAL 
本地锁{换操?/span>


349. V$GES_CONVERT_REMOTE 
q程锁{换操作所消耗的旉?/span>


350. V$GES_ENQUEUE 
昄当前锁管理员知道的所有的锁?/span>


351. V$GES_LATCH 
参见V$LATCH


352. V$GES_RESOURCE 
昄当前锁管理器已知的全部资源的信息?/span>


353. V$GES_STATISTICS 
昄多种DLMl计量?/span>


354. V$GLOBAL_BLOCKED_LOCKS 
昄全局块锁?/span>


355. V$GLOBAL_TRANSACTION 
昄当前Ȁzȝ全局事务的信息?/span>


356. V$HS_AGENT 
标识当前q行在一个给定的L上的HS代理的集合?/span>


357. V$HS_SESSION 
ORACLE服务器打开?/span>HS会话集?/span>


358. V$INDEXED_FIXED_COLUMN 
昄建立索引的动态性能表中的列(X$?/span>)?/span>


359. V$INSTANCE 
昄当前实例的状态?/span>


360. V$INSTANCE_RECOVERY 
用来监视执行用户指定恢复L数的限制机制?/span>


361. V$LATCH 
为非双亲易锁列出l计量?/span>


362. V$LATCH_CHILDREN 
关于子简易锁的统计量?/span>


363. V$LATCH_MISSES 
试图获得一个简易锁p|的统计量?/span>


364. V$LATCH_PARENT 
包含关于双亲易锁的统计量?/span>


365. V$LATCHHOLDER 
当前易锁持有者的信息?/span>


366. V$LATCHNAME 
包含关于昄?/span>V$LATCH中的易锁的解码简易锁名字的信息?/span>


367. V$LIBRARYCACHE 
关于高速缓存性能和活动的l计量?/span>


368. V$LICENSE 
许可证限制的信息?/span>


369. V$LOADCSTAT 
包含在一个直接装载执行过E中所~译?/span>SQL*LOADERl计量?/span>


370. V$LOCK 
当前ORACLE所持有的锁?/span>


371. V$LOCK_ACTIVITY 
昄当前实例?/span>DLM锁操作活动?/span>


372. V$LOCK_ELEMENT 
每一个被~存使用?/span>PCM锁在V$LOCK_ELEMENTS中都有一个条目?/span>


373. V$LOCKED_OBJECT 
列出每个事务所获得的全部锁?/span>


374. V$LOCK_WITH_COLLISIONS 
可以查询Z护多~冲区的锁?/span>


375. V$LOG 
控制文g中日志文件的信息?/span>


376. V$LOG_HISTORY 
控制文g中日志文件的历史信息?/span>


377. V$LOGFILE 
包含重做日志文g的信息?/span>


378. V$LOGHIST 
控制文g中日志文件的日志历史信息?/span>


379. V$LOGMNR_CONTENTS 
日志历史信息?/span>


380. V$LOGMNR_DICTIONARY 
日志历史信息?/span>


381. V$LOGMNR_LOGS 
日志信息?/span>


382. V$LOGMNR_PARAMETERS 
日志信息?/span>


383. V$MTS 
包含调节多线E的服务器的信息?/span>


384. V$MYSTAT 
当前会话的统计量?/span>


385. V$NLS_PARAMETERS 
当前NLS参数信息?/span>


386. V$NLS_VALID_VALUES 
列出所?/span>NLS参数的有效倹{?/span>


387. V$OBJECT_DEPENDENCY 
能够通过当前装蝲在共享池中的包,q程或游标来军_依赖哪一个对象?/span>


388. V$OBJECT_USAGE 
来监视烦引的使用?/span>


389. V$OBSOLETE_PARAMETER 
列出陈旧的参数?/span>


390. V$OFFINE_RANGE 
昄控制文g中数据文件的脱机信息?/span>


391. V$OPEN_CURSOR 
列出每一个会话当前打开的和解析的游标?/span>


392. V$OPTION 
列出ORACLE服务安装的状c?/span>


393. V$PARALLEL_DEGREE_LIMIT_MTH 
昄所有有效的q行度限制资源分配的Ҏ?/span>


394. V$PARAMETER 
列出关于初始化参数的信息?/span>


395. V$PARAMETER2 
列出了当前媄响会话的参数和参数倹{?/span>

 
396. V$PGASTAT 
列出ORACLE内存使用l计?/span>

 
397. V$PING 
?/span>V$CACHE一栗?/span>


398. V$PQ_SESSTAT 
列出q行查询会话的统计信息?/span>


399. V$PQ_SLAVE 
一个实例上每个zdq行执行服务器的l计量?/span>


400. V$PQ_SYSSTAT 
列出q行查询的系l的l计量?/span>



kxbin 2012-09-13 17:27 发表评论
]]>
oracle常见问题(201-300)http://www.tkk7.com/kxbin/articles/387659.htmlkxbinkxbinThu, 13 Sep 2012 09:26:00 GMThttp://www.tkk7.com/kxbin/articles/387659.htmlhttp://www.tkk7.com/kxbin/comments/387659.htmlhttp://www.tkk7.com/kxbin/articles/387659.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387659.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387659.html阅读全文

kxbin 2012-09-13 17:26 发表评论
]]>
oracle常见问题(101-200)http://www.tkk7.com/kxbin/articles/387657.htmlkxbinkxbinThu, 13 Sep 2012 09:24:00 GMThttp://www.tkk7.com/kxbin/articles/387657.htmlhttp://www.tkk7.com/kxbin/comments/387657.htmlhttp://www.tkk7.com/kxbin/articles/387657.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387657.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387657.html阅读全文

kxbin 2012-09-13 17:24 发表评论
]]>
oracle常见问题(1-100)http://www.tkk7.com/kxbin/articles/387656.htmlkxbinkxbinThu, 13 Sep 2012 09:23:00 GMThttp://www.tkk7.com/kxbin/articles/387656.htmlhttp://www.tkk7.com/kxbin/comments/387656.htmlhttp://www.tkk7.com/kxbin/articles/387656.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387656.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387656.html阅读全文

kxbin 2012-09-13 17:23 发表评论
]]>
ORACLE PL/SQL~程详解之七Q? E序包的创徏与应?/title><link>http://www.tkk7.com/kxbin/articles/387581.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 12 Sep 2012 09:34:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/387581.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/387581.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/387581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/387581.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/387581.html</trackback:ping><description><![CDATA[     摘要: 本篇主要内容如下Q第七章  E序包的创徏和应?.1  E序包简?.2  E序包的定义7.3  包的开发步?.4  包定义的说明7.5  子程序重?.6  加密实用E序7.7  删除?.8  包的理 ...  <a href='http://www.tkk7.com/kxbin/articles/387581.html'>阅读全文</a><img src ="http://www.tkk7.com/kxbin/aggbug/387581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-12 17:34 <a href="http://www.tkk7.com/kxbin/articles/387581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE PL/SQL~程详解之六Q?把过E与函数说?/title><link>http://www.tkk7.com/kxbin/articles/387580.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 12 Sep 2012 09:33:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/387580.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/387580.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/387580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/387580.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/387580.html</trackback:ping><description><![CDATA[     摘要: 本篇主要内容如下Q?.1 引言6.2 创徏函数6.3 存储q程6.3.1 创徏q程6.3.2 调用存储q程6.3.3 AUTHID6.3.4 PRAGMA AUTONOMOUS_TRANSACTION6.3.5 开发存储过E步?.3.6 删除q程和函?.3.7 q程与函数的比较 6.1...  <a href='http://www.tkk7.com/kxbin/articles/387580.html'>阅读全文</a><img src ="http://www.tkk7.com/kxbin/aggbug/387580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-12 17:33 <a href="http://www.tkk7.com/kxbin/articles/387580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE PL/SQL~程详解之五Q?异常错误处理http://www.tkk7.com/kxbin/articles/387579.htmlkxbinkxbinWed, 12 Sep 2012 09:32:00 GMThttp://www.tkk7.com/kxbin/articles/387579.htmlhttp://www.tkk7.com/kxbin/comments/387579.htmlhttp://www.tkk7.com/kxbin/articles/387579.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387579.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387579.html阅读全文

kxbin 2012-09-12 17:32 发表评论
]]>
ORACLE PL/SQL~程详细之四Q?把游标说?/title><link>http://www.tkk7.com/kxbin/articles/387578.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 12 Sep 2012 09:31:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/387578.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/387578.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/387578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/387578.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/387578.html</trackback:ping><description><![CDATA[     摘要: 本篇主要内容如下Q?.1 游标概念4.1.1 处理昑ּ游标4.1.2 处理隐式游标4.1.3 关于 NO_DATA_FOUND ?nbsp;%NOTFOUND的区?.1.4  使用游标更新和删除数?.2 游标变量4.2.1  声明游标变量4.2.2  游标变量操作...  <a href='http://www.tkk7.com/kxbin/articles/387578.html'>阅读全文</a><img src ="http://www.tkk7.com/kxbin/aggbug/387578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-12 17:31 <a href="http://www.tkk7.com/kxbin/articles/387578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE PL/SQL~程详解之三QPL/SQL程控制语句http://www.tkk7.com/kxbin/articles/387577.htmlkxbinkxbinWed, 12 Sep 2012 09:30:00 GMThttp://www.tkk7.com/kxbin/articles/387577.htmlhttp://www.tkk7.com/kxbin/comments/387577.htmlhttp://www.tkk7.com/kxbin/articles/387577.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387577.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387577.html阅读全文

kxbin 2012-09-12 17:30 发表评论
]]>
ORACLE PL/SQL~程详解之二Q?PL/SQL块结构和l成元素http://www.tkk7.com/kxbin/articles/387571.htmlkxbinkxbinWed, 12 Sep 2012 09:00:00 GMThttp://www.tkk7.com/kxbin/articles/387571.htmlhttp://www.tkk7.com/kxbin/comments/387571.htmlhttp://www.tkk7.com/kxbin/articles/387571.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387571.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387571.html阅读全文

kxbin 2012-09-12 17:00 发表评论
]]>
ORACLE PL/SQL~程详解之一QPL/SQL E序设计?/title><link>http://www.tkk7.com/kxbin/articles/387570.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 12 Sep 2012 08:59:00 GMT</pubDate><guid>http://www.tkk7.com/kxbin/articles/387570.html</guid><wfw:comment>http://www.tkk7.com/kxbin/comments/387570.html</wfw:comment><comments>http://www.tkk7.com/kxbin/articles/387570.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kxbin/comments/commentRss/387570.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kxbin/services/trackbacks/387570.html</trackback:ping><description><![CDATA[<p style="margin: 7.5pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: 宋体; background-color: #ffff00; font-size: 11pt; font-weight: bold; ">本篇主要内容如下Q?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="text-transform: uppercase; font-family: Arial; font-size: 10.5pt; ">W?/span><span style="text-transform: uppercase; font-family: 宋体; font-size: 10.5pt; ">一</span><span style="text-transform: uppercase; font-family: Arial; font-size: 10.5pt; ">?nbsp;  PL/SQL E序设计?/span></a></p><p style="margin: 0pt 0px 0pt 10.5pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">1.</span><span style="font-variant: small-caps; font-family: 宋体; font-size: 10pt; ">1</span><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">   SQL与PL/SQL</span></a></p><p style="margin: 0pt 0px 0pt 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-family: 'Times New Roman'; font-size: 10pt; ">1.</span><span style="font-family: 宋体; font-size: 10pt; ">1</span><span style="font-family: 'Times New Roman'; font-size: 10pt; ">.1  什么是PL/SQL?</span></a></p><p style="margin: 0pt 0px 0pt 10.5pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">1.</span><span style="font-variant: small-caps; font-family: 宋体; font-size: 10pt; ">2</span><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">  PL/SQL?/span><span style="font-variant: small-caps; font-family: 宋体; font-size: 10pt; ">优点或特?/span></a></p><p style="margin: 0pt 0px 0pt 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-family: 'Times New Roman'; font-size: 10pt; ">1.2.1  有利于客?服务器环境应用的q行</span></a></p><p style="margin: 0pt 0px 0pt 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-family: 'Times New Roman'; font-size: 10pt; ">1.2.2  适合于客L?/span></a></p><p style="margin: 0pt 0px 0pt 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-family: 'Times New Roman'; font-size: 10pt; ">1.2.</span><span style="font-family: 宋体; font-size: 10pt; ">3</span><span style="font-family: 'Times New Roman'; font-size: 10pt; ">  </span><span style="font-family: 宋体; font-size: 10pt; ">q程?/span></a></p><p style="margin: 0pt 0px 0pt 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-family: 'Times New Roman'; font-size: 10pt; ">1.2.</span><span style="font-family: 宋体; font-size: 10pt; ">4</span><span style="font-family: 'Times New Roman'; font-size: 10pt; ">  </span><span style="font-family: 宋体; font-size: 10pt; ">模块?/span></a></p><p style="margin: 0pt 0px 0pt 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-family: 'Times New Roman'; font-size: 10pt; ">1.2.</span><span style="font-family: 宋体; font-size: 10pt; ">5</span> <span style="font-family: 宋体; font-size: 10pt; "> q行错误的可处理?/span></a></p><p style="margin: 0pt 0px 0pt 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-family: 'Times New Roman'; font-size: 10pt; ">1.2.</span><span style="font-family: 宋体; font-size: 10pt; ">6</span> <span style="font-family: 宋体; font-size: 10pt; "> 提供大量内置E序?/span></a></p><p style="margin: 0pt 0px 0pt 10.5pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">1.</span><span style="font-variant: small-caps; font-family: 宋体; font-size: 10pt; ">3</span><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">  PL/SQL 可用的SQL语句</span></a></p><p style="margin: 0pt 0px 0pt 10.5pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><a style="color: #464646; text-decoration: none; "><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">1.</span><span style="font-variant: small-caps; font-family: 宋体; font-size: 10pt; ">4</span><span style="font-variant: small-caps; font-family: 'Times New Roman'; font-size: 10pt; ">  q行PL/SQLE序</span></a></p><p style="margin: 0pt 0px 0pt 10.5pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><hr style="font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; line-height: normal; background-color: #ffffff; " /><p style="margin: 7px 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "> </p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><p style="margin: 0pt 0px; text-indent: 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: 宋体; font-size: 10.5pt; ">SQL语言只是讉K、操作数据库的语aQƈ不是一U具有流E控制的E序设计语言Q而只有程序设计语a才能用于应用软g的开发?/span><span style="font-family: Arial; font-size: 10.5pt; ">PL /SQL是一U高U数据库E序设计语言Q该语言专门用于在各U环境下对ORACLE数据库进行访问。由于该语言集成于数据库服务器中Q所以PL/SQL代码可以Ҏ据进行快速高效的处理。除此之外,可以在ORACLE数据库的某些客户端工具中Q用PL/SQL语言也是该语a的一个特炏V本章的主要内容是讨论引入PL/SQL语言的必要性和该语a的主要特点,以及了解PL/SQL语言的重要性和数据库版本问题。还要介l一些诏I全书的更详l的高概念Qƈ在本章的最后就我们在本书案例中使用的数据库表的若干U定做一说明?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><h2><a name="_Toc518865172" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 12pt; "><a name="_Toc521305443" style="color: rgb(70, 70, 70); "></a><a name="_Toc521418090" style="color: rgb(70, 70, 70); "></a><a name="_Toc524428001" style="color: rgb(70, 70, 70); "></a><a name="_Toc525949039" style="color: rgb(70, 70, 70); "></a><a name="_Toc528407121" style="color: rgb(70, 70, 70); "></a><a name="_Toc477183988" style="color: rgb(70, 70, 70); "></a><a name="_Toc24706" style="color: rgb(70, 70, 70); "></a><a name="_Toc18787" style="color: #464646; ">1.</a></span><span style="font-family: 宋体; font-size: 12pt; ">1</span><span style="font-family: Arial; font-size: 12pt; ">   SQL与PL/SQL</span></h2><h3><a name="_Toc518865173" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 10.5pt; "><a name="_Toc521305444" style="color: rgb(70, 70, 70); "></a><a name="_Toc521418091" style="color: rgb(70, 70, 70); "></a><a name="_Toc524428002" style="color: rgb(70, 70, 70); "></a><a name="_Toc525949040" style="color: rgb(70, 70, 70); "></a><a name="_Toc528407122" style="color: rgb(70, 70, 70); "></a><a name="_Toc477183989" style="color: rgb(70, 70, 70); "></a><a name="_Toc24699" style="color: rgb(70, 70, 70); "></a><a name="_Toc11821" style="color: #464646; ">1.</a></span><span style="font-family: 宋体; font-size: 10.5pt; ">1</span><span style="font-family: Arial; font-size: 10.5pt; ">.1  什么是PL/SQL?</span></h3><p style="margin: 0pt 0px; text-indent: 27pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL?nbsp;Procedure Language & Structured Query Language 的羃写。ORACLE的SQL是支持ANSI(American national Standards Institute)和ISO92 (International Standards Organization)标准的品。PL/SQL是对SQL语言存储q程语言的扩展。从ORACLE6以后QORACLE的RDBMS附带了PL/SQL。它现在已经成ؓ一U过E处理语aQ简UPL/SQL。目前的PL/SQL包括两部分,一部分是数据库引擎部分Q另一部分是可嵌入到许多品(如C语言QJAVA语言{)工具中的独立引擎。可以将q两部分UCؓQ数据库PL/SQL和工具PL/SQL。两者的~程非常怼。都h~程l构、语法和逻辑机制。工具PL/SQL另外q增加了用于支持工具Q如ORACLE FormsQ的句法Q如Q在H体上设|按钮等。本章主要介l数据库PL/SQL内容?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><h2><a name="_Toc503776575" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 12pt; "><a name="_Toc518865174" style="color: rgb(70, 70, 70); "></a><a name="_Toc521305445" style="color: rgb(70, 70, 70); "></a><a name="_Toc521418092" style="color: rgb(70, 70, 70); "></a><a name="_Toc524428003" style="color: rgb(70, 70, 70); "></a><a name="_Toc525949041" style="color: rgb(70, 70, 70); "></a><a name="_Toc528407123" style="color: rgb(70, 70, 70); "></a><a name="_Toc477183990" style="color: rgb(70, 70, 70); "></a><a name="_Toc15813" style="color: rgb(70, 70, 70); "></a><a name="_Toc5025" style="color: #464646; ">1.</a></span><span style="font-family: 宋体; font-size: 12pt; ">2</span><span style="font-family: Arial; font-size: 12pt; ">  PL/SQL?/span><span style="font-family: 宋体; font-size: 12pt; ">优点或特?/span></h2><h3><a name="_Toc518865175" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 10.5pt; "><a name="_Toc521305446" style="color: rgb(70, 70, 70); "></a><a name="_Toc521418093" style="color: rgb(70, 70, 70); "></a><a name="_Toc525949042" style="color: rgb(70, 70, 70); "></a><a name="_Toc528407124" style="color: rgb(70, 70, 70); "></a><a name="_Toc8118" style="color: rgb(70, 70, 70); "></a><a name="_Toc6530" style="color: #464646; ">1.2.1  有利于客?服务器环境应用的q行</a></span></h3><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">对于客户/服务器环境来_真正的瓶颈是|络上。无论网l多快,只要客户端与服务器进行大量的数据交换。应用运行的效率自然回受到影响。如果用PL/SQLq行~程Q将q种h大量数据处理的应用放在服务器端来执行。自然就省去了数据在|上的传输时间?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><h3><a name="_Toc518865176" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 10.5pt; "><a name="_Toc521305447" style="color: rgb(70, 70, 70); "></a><a name="_Toc521418094" style="color: rgb(70, 70, 70); "></a><a name="_Toc525949043" style="color: rgb(70, 70, 70); "></a><a name="_Toc528407125" style="color: rgb(70, 70, 70); "></a><a name="_Toc6181" style="color: rgb(70, 70, 70); "></a><a name="_Toc20499" style="color: #464646; ">1.2.2  适合于客L?/a></span></h3><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL׃分ؓ数据库PL/SQL部分和工具PL/SQL。对于客L来说QPL/SQL可以嵌套到相应的工具中,客户端程序可以执行本地包含PL/SQL部分Q也可以向服务发SQL命o或激zL务器端的PL/SQLE序q行?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><h3><a name="_Toc28930" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 10.5pt; "><a name="_Toc21230" style="color: #464646; ">1.2.</a></span><span style="font-family: 宋体; font-size: 10.5pt; ">3</span><span style="font-family: Arial; font-size: 10.5pt; ">  </span><span style="font-family: 宋体; font-size: 10.5pt; ">q程?/span></h3><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL</span><span style="font-family: 宋体; font-size: 10.5pt; ">?/span><span style="font-family: 宋体; font-size: 10.5pt; ">Oracle在标准SQL上的q程性扩展,不仅允许在PL/SQLE序内嵌入SQL语句Q而且允许使用各种cd的条件分支语句和循环语句Q可以多个应用程序之间共享其解决Ҏ</span><span style="font-family: Arial; font-size: 10.5pt; ">?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><h3><a name="_Toc2337" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 10.5pt; "><a name="_Toc6437" style="color: #464646; ">1.2.</a></span><span style="font-family: 宋体; font-size: 10.5pt; ">4</span><span style="font-family: Arial; font-size: 10.5pt; ">  </span><span style="font-family: 宋体; font-size: 10.5pt; ">模块?/span></h3><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL</span><span style="font-family: 宋体; font-size: 10.5pt; ">E序l构是一U描q性很强、界限分明的块结构、嵌套块l构Q被分成单独的过E、函数、触发器Q且可以把它们组合ؓE序包,提高E序的模块化能力</span><span style="font-family: Arial; font-size: 10.5pt; ">?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><h3><a name="_Toc23825" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 10.5pt; "><a name="_Toc21211" style="color: #464646; ">1.2.</a></span><span style="font-family: 宋体; font-size: 10.5pt; ">5</span>  <span style="font-family: 宋体; font-size: 10.5pt; ">q行错误的可处理?/span></h3><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: 宋体; font-size: 10.5pt; ">使用</span><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL</span><span style="font-family: 宋体; font-size: 10.5pt; ">提供的异常处理(</span><span style="font-family: 宋体; font-size: 10.5pt; ">EXCEPTIONQ,开发h员可集中处理各种ORACLE错误和PL/SQL错误Q或处理pȝ错误与自定义错误Q以增强应用E序的健壮性?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><h3><a name="_Toc16138" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 10.5pt; "><a name="_Toc22163" style="color: #464646; ">1.2.</a></span><span style="font-family: 宋体; font-size: 10.5pt; ">6</span>  <span style="font-family: 宋体; font-size: 10.5pt; ">提供大量内置E序?/span></h3><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: 宋体; font-size: 10.5pt; ">ORACLE提供了大量的内置E序包。通过q些E序包能够实现DBS的一些低层操作、高U功能,不论对DBAq是应用开发h员都h重要作用?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><p style="margin: 0pt 0px; text-indent: 21pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: 宋体; font-size: 10.5pt; ">当然q有其它的一些优点如Q更好的性能、可UL性和兼容性、可l护性、易用性与快速性等?/span></p><h2><a name="_Toc518865178" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 12pt; "><a name="_Toc521305449" style="color: rgb(70, 70, 70); "></a><a name="_Toc521418096" style="color: rgb(70, 70, 70); "></a><a name="_Toc524428004" style="color: rgb(70, 70, 70); "></a><a name="_Toc525949045" style="color: rgb(70, 70, 70); "></a><a name="_Toc528407127" style="color: rgb(70, 70, 70); "></a><a name="_Toc477183991" style="color: rgb(70, 70, 70); "></a><a name="_Toc10163" style="color: rgb(70, 70, 70); "></a><a name="_Toc30478" style="color: #464646; ">1.</a></span><span style="font-family: 宋体; font-size: 12pt; ">3</span><span style="font-family: Arial; font-size: 12pt; ">  PL/SQL 可用的SQL语句</span></h2><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">    PL/SQL是ORACLEpȝ的核心语aQ现在ORACLE的许多部仉是由PL/SQL写成。在PL/SQL中可以用的SQL语句有:</span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">INSERTQUPDATEQDELETEQSELECT INTOQCOMMITQROLLBACKQSAVEPOINT?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-style: italic; font-family: Arial; font-size: 10.5pt; font-weight: bold; ">提示Q在 PL/SQL中只能用 SQL语句中的 DML 部分Q不能用 DDL 部分Q如果要在PL/SQL中用DDL(如CREATE  table  {?的话Q只能以动态的方式来用?/span></p><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "></p><p style="margin: 0pt 0px 0pt 39pt; text-indent: -18pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Wingdings; font-size: 10.5pt; ">l </span><span style="font-family: Arial; font-size: 10.5pt; ">ORACLE ?nbsp;PL/SQL lg在对 PL/SQL E序q行解释Ӟ同时对在其所使用的表名、列名及数据cdq行查?/span></p><p style="margin: 0pt 0px 0pt 39pt; text-indent: -18pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Wingdings; font-size: 10.5pt; ">l </span><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL 可以在SQL*PLUS 中用?/span></p><p style="margin: 0pt 0px 0pt 39pt; text-indent: -18pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Wingdings; font-size: 10.5pt; ">l </span><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL 可以在高U语a中用?/span></p><p style="margin: 0pt 0px 0pt 39pt; text-indent: -18pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Wingdings; font-size: 10.5pt; ">l </span><span style="font-family: Arial; font-size: 10.5pt; ">PL/SQL可以在ORACLE的开发工具中使用</span><span style="font-family: 宋体; font-size: 10.5pt; ">(如:SQL Developer或Procedure Builder{?</span><span style="font-family: Arial; font-size: 10.5pt; ">?/span></p><p style="margin: 0pt 0px 0pt 39pt; text-indent: -18pt; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Wingdings; font-size: 10.5pt; ">l </span><span style="font-family: Arial; font-size: 10.5pt; ">其它开发工具也可以调用PL/SQL~写的过E和函数Q如Power Builder {都可以调用服务器端的PL/SQLq程?/span></p><h2><a name="_Toc518865179" style="color: rgb(70, 70, 70); "></a><span style="font-family: Arial; font-size: 12pt; "><a name="_Toc521305450" style="color: rgb(70, 70, 70); "></a><a name="_Toc521418097" style="color: rgb(70, 70, 70); "></a><a name="_Toc524428005" style="color: rgb(70, 70, 70); "></a><a name="_Toc525949046" style="color: rgb(70, 70, 70); "></a><a name="_Toc528407128" style="color: rgb(70, 70, 70); "></a><a name="_Toc477183992" style="color: rgb(70, 70, 70); "></a><a name="_Toc2603" style="color: rgb(70, 70, 70); "></a><a name="_Toc6182" style="color: #464646; ">1.</a></span><span style="font-family: 宋体; font-size: 12pt; ">4</span><span style="font-family: Arial; font-size: 12pt; ">  q行PL/SQLE序</span></h2><p style="margin: 0pt 0px; line-height: 24px; font-family: 微Y雅黑, 宋体, Arial; font-size: 15px; background-color: #ffffff; "><span style="font-family: Arial; font-size: 10.5pt; ">    PL/SQLE序的运行是通过ORACLE中的一个引擎来q行的。这个引擎可能在ORACLE的服务器端,也可能在 ORACLE 应用开发的客户端。引擎执行PL/SQL中的q程性语句,然后SQL语句发送给数据库服务器来执行。再结果返回给执行端?/span></p><img src ="http://www.tkk7.com/kxbin/aggbug/387570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kxbin/" target="_blank">kxbin</a> 2012-09-12 16:59 <a href="http://www.tkk7.com/kxbin/articles/387570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE PL/SQL~程之八Q把触发器说?http://www.tkk7.com/kxbin/articles/387567.htmlkxbinkxbinWed, 12 Sep 2012 08:50:00 GMThttp://www.tkk7.com/kxbin/articles/387567.htmlhttp://www.tkk7.com/kxbin/comments/387567.htmlhttp://www.tkk7.com/kxbin/articles/387567.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387567.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387567.html阅读全文

kxbin 2012-09-12 16:50 发表评论
]]>
oracle记录cdhttp://www.tkk7.com/kxbin/articles/387123.htmlkxbinkxbinWed, 05 Sep 2012 13:52:00 GMThttp://www.tkk7.com/kxbin/articles/387123.htmlhttp://www.tkk7.com/kxbin/comments/387123.htmlhttp://www.tkk7.com/kxbin/articles/387123.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387123.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387123.htmlpl/sql表和记录一P都是用户自定义的数据l构。recordcM于c语言中结构(structQ而pl/sql表类gc语言的数l或集合Q只是这个数据的元素可以是用戯定义的类型。record可以存储一条记录,而pl/sql表可以存储多条record记录?br />一Q什么是记录QRecordQ?
 由单行多列的标量构成的复合结构。可以看做是一U用戯定义数据cd。组成类g多维数组?/div>
一个或多个标量装成一个对象进行操作。是一U时复合对象类型?/div>
 
 记录可以直接赋倹{RECORD1 :=RECORD2Q?/div>
 记录不可以整体比?
 记录不可以整体判断ؓI?/div>
 
二,%ROWTYPE和记录(RecordQ?
 请区?ROWTYPE和记录(RecordQ类型?ROWTYPE可以说是Record的升U简化版?/div>
 区别在与前者结构ؓ表结构,后者ؓ自定义结构。二者在使用上没有很大区别。前者方便,后者灵zR在实际中根据情冉|具体军_使用?/div>
 Record + PL/SQL表可以进行数据的多行多列存储?/div>
 
三,如何创徏和用记录?
 
  ①创徏记录cd
  语法Q?/div>
  TYPE  记录? IS RECORD 
  ( 
   filed1 type1 [NOT NULL] [Q?eXPr1],
       ....... ,
    filedN typen [NOT NULL] [Q?exprn] 
  Q?/div>
  其中Qfiled1是标量的名字?/div>
  
  ②声明记录cd变量Q?/div>
   记录cd变量?记录cd
   
  ③填充记录?/div>
   
  ④讉K记录成员
   记录cd变量?filed1
   .........
   记录cd变量?filedN
   
   
  注意Q?/div>
  表字D늱型修改后Q还需要修改记录字D늱型,有时候可能会忘记Q从而出现错误?/div>
  对于记录内每个字D(filed1.。。。)Q可以指定也可以使用%TYPE?ROWTYPE动态指定记录字D늱型?nbsp;
  好处是表字段发生变化Q记录字D自动改变。但是,׃每次执行前,遇到%TYPR?ROWTYPEQ?/div>
  数据库系l都会去查看对应表字D늱型,会造成一定的数据库开销Q如果系l中大量使用记录cdQ则Ҏ能会有一定媄响?/div>
  另外如果删除了某一字段Q而自定义记录中用了该字D,也会有可能忘记删除该字段?/div>
       Ҏ据库负荷偏低的系l,性能问题一般可以不重点xQ但是对于高负荷数据库服务器Q?/div>
       各个环节都要考虑性能问题Q每处节省一点出来,性能整体有很大提高?/div>
  
  语法Q?/div>
  TYPE  记录? IS RECORD 
  ( 
   filed1 table.Filed%Type [NOT NULL] [Q?eXPr1] ,
   filed2 table.Filed%Type [NOT NULL] [Q?eXPr1] ,
       ....... ,
    filedn table.Filed%Type [NOT NULL] [Q?exprn] 
  Q?
 
 例子Q记录可以整体赋?/div>
 /*conn scott/tiger
 Create Table  empa  As  Select * From emp;
 */
 Declare
     Type EmpType is Record(
        EMPNO number(4),
        ENAME  varchar2(10),
        JOB varchar2(15),
        SAL number(7,2),
        DEPTNO number(2)
     );
   EmpRec1  EmpType;
   EmpRec2  EmpType;
 Begin
   EmpRec1.Empno:=7369;
   EmpRec1.Ename:='SMITH';
   EmpRec1.Job:='CLERK';
   EmpRec1.Sal:=800;
   EmpRec1.Deptno:=10;
   EmpRec2 := EmpRec1;
   DBMS_output.put_line(EmpRec2.empno);
 End;
 例子Q记录不可以整体比较Q只可以比较记录字段
 Declare
     Type EmpType is Record(
        EMPNO number(4),
        ENAME  varchar2(10),
        JOB varchar2(15),
        SAL number(7,2),
        DEPTNO number(2)
     );
   EmpRec1  EmpType;
   EmpRec2  EmpType;
 Begin
   EmpRec1.Empno:=7369;
   EmpRec1.Ename:='SMITH';
   EmpRec1.Job:='CLERK';
   EmpRec1.Sal:=800;
   EmpRec1.Deptno:=10;
   if EmpRec1.sal < EmpRec2.sal then
     DBMS_output.put_line('Xiao Xiao Xiao');
   end if;
 End;
 
 例子Q记录不可以整体判断为空Q只可以判断记录字段?/div>
 Declare
     Type EmpType is Record(
        EMPNO number(4),
        ENAME  varchar2(10),
        JOB varchar2(15),
        SAL number(7,2),
        DEPTNO number(2)
     );
   EmpRec  EmpType;
 Begin
   if EmpRec.ename is null then
     DBMS_output.put_line('Kong Kong Kong');  
   end if;
 End;
 
 例子Q?TYPE?ROWTYPE动态指定记录字Dc?/div>
 /*conn scott/tiger
 Create Table  empa  As  Select * From emp;
 */
 DECLARE
  Type MyRecType Is  Record
  (
   RENO  EMPA.EMPNO%Type,
   RENAME   EMPA.ENAME%Type,
   RJOB   EMPA.JOB%Type
  );
  EmpRec  MyRecType;
 Begin
  Select   EMPNO, ENAME, JOB  InTo  EmpRec  From empa Where empa.EMPNO = '7369';
  If  EmpRec.RJOB  = 'CLERK'  Then
   DBMS_OUTPUT.PUT_LINE('Name: '||EmpRec.RENAME);
  End If;
 End;
 
 例子Q数据集中的记录和记录类型中的数据关pR?/div>
 DECLARE
  Type MyRecType Is  Record
  (
   RENO  EMPA.EMPNO%Type,
   RENAME   EMPA.ENAME%Type,
   RJOB   EMPA.JOB%Type
  );
  EmpRec  MyRecType;
  vJob  EMPA.JOB%Type;
 Begin
  Select   EMPNO, ENAME, JOB  InTo  EmpRec  From empa Where empa.EMPNO = '7369';
  DBMS_OUTPUT.PUT_LINE('MyRecType.RJOB: '||EmpRec.RJOB);
  EmpRec.RJOB  := '修改值后'  ;
  DBMS_OUTPUT.PUT_LINE('MyRecType.RJOB: '||EmpRec.RJOB);
  Select JOB  InTo vJob  from empa  Where empa.EMPNO = EmpRec.RENO;
  DBMS_OUTPUT.PUT_LINE('EMPA.JOB: '||vJob);
 End;
 /
 
 
四,使用记录向表中插入数据?
 Ҏ表结构合理安排记录字Dc比如主外键?/div>
 如果用记?RECORD)插入数据Q那么只能用记录成员;
 如果?ROWTYPE插入数据,可以直接使用%ROWTYPE?/div>
 
 例子Q用记录成员向表中插入数据
 DECLARE
  Type MyRecType Is  Record
  (
   RENO  EMPA.EMPNO%Type,
   RENAME   VARCHAR2(10),
   RJOB   EMPA.JOB%Type
  );
  EmpRec MyRecType; 
 Begin
  Select   EMPNO, ENAME, JOB  InTo  EmpRec  From empa Where empa.EMPNO = '7369';
  DBMS_OUTPUT.PUT_LINE(EmpRec.RENO||'  '||EmpRec.RENAME||'  '||EmpRec.RJOB);
  
  EmpRec.RENO  := 1001;
  EmpRec.RENAME := '杰克';
  EmpRec.RJOB  := '办事?;
  Insert InTo  empa(EMPNO,ENAME,JOB)  Values(EmpRec.RENO, EmpRec.RENAME,EmpRec.RJOB);
 
  Select  EMPNO, ENAME, JOB  InTo  EmpRec  From empa Where empa.EMPNO = '1001';
  DBMS_OUTPUT.PUT_LINE(EmpRec.RENO||'  '||EmpRec.RENAME||'  '||EmpRec.RJOB);
 End;
 
五,使用记录更新数据Q?/div>
 如果用记?RECORD)更新数据Q那么只能用记录成员;
 如果?ROWTYPE更新数据,可以直接使用%ROWTYPE?/div>
 
 例子Q?ROWTYPE向表中插入数?/div>
 DECLARE
  vEmp empa%RowType;
 Begin
  Select  *  InTo  vEmp  From empa Where empa.EMPNO = '7369';
  UpDate empa Set ROW = vEmp Where EMPNO = 1001;
 End;
六,使用记录删除数据Q?/div> 删除记录Ӟ只能在delete语句的where子句中用记录成员?nbsp;

kxbin 2012-09-05 21:52 发表评论
]]>国外E序员所U篏?0条编E经??http://www.tkk7.com/kxbin/articles/387114.htmlkxbinkxbinWed, 05 Sep 2012 09:10:00 GMThttp://www.tkk7.com/kxbin/articles/387114.htmlhttp://www.tkk7.com/kxbin/comments/387114.htmlhttp://www.tkk7.com/kxbin/articles/387114.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387114.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387114.html~者按Q原文作者乔Ux·丹尼可(Jonathan DanylkoQ是一位自p业的web架构师和E序员,~程l验已超q?0q_涉领域有电子商务、生物技术、房C、医疗、保险和公用事业。正如乔Ux在文中所aQ本文适合刚毕业的大学生和刚入门的E序员。如果你已是高开发h员,或许你能在本文中看到自己的n影?/p>

?1岁时Q我׃直在~程Qƈ且一直都很喜Ƣ技术和~程。这些年来,我积累了一些艰隑֏Ҏ的经验。作Z名程序员Q你或许q没q些l验Q但我会把它们献l那些想从中学到更多的朋友?/p>

我会持箋更新q些l验Q我可能q会有更多的感想Q但我q?0q来看,我想下面q个列表中基本不需要增添额外的东西了。下面就是我至今最隑ֿ的经验?/p>

1. 估算解决问题所需要的旉。不要怕,承认吧!我曾见过一些程序员Z解决一个特D问题而坐在显C器前面8时。ؓ自己定一个时间限制吧Q?时?0分钟或甚?5分钟。如果在q期间你不能解决问题Q那去L帮助Q或到网上找{案Q而不是尝试去?#8220;堆码?#8221;?/p>

2. ~程语言是一U语aQ只是一U语a。随着时光推移Q只要你理解了一U语a的原理,你会发现各种语言之间的相g?。你所选择的语aQ你应该觉得“舒服”Qƈ且能够写出有效(而且z)的代码。最重要的,让语a去适应目Q反之亦然?/p>

3. 不要q于注重E序?#8220;设计模式”?有时候,写一个简单的法Q要比引入某U模式更Ҏ。在多数情况下,E序代码应是单易懂,甚至清洁工也能看懂?/p>

 4. l常备䆾代码。在我年LQ我有q因盘故障而丢了大量代码的l历Q这l历很恐怖的。只要你一ơ没有备份,应当像有着严格的期限,客户明天需要。此时就该源?版本控制软g大显w手了?/p>

5. 承认自己q不是最尖的程序员 - 知不뀂我常想Q我对编E了解已_多,但是L其他人比你优U。正所谓,“一山L一山高”。所以,向他们看齐吧Q?

6、学习再学习。正如第5Ҏ_我经怼在手里拿一本计机或编E相关的杂志或书Q不信,可以问我的朋友)。诚ӞL很多你不知道的技术,你可以从中学习以保持不落后。如果你有一U灵巧的方式来获取你需要的新技术,那你每天都应该坚持学习?/p>

7. 永恒的变化。你对待技?~程知识Q就应像你对待股一P多样化。不要在某一特定技术上自我感觉良好。如果U技术或语言已经没有_支持Q那你还不如现在开始更C的简历,q启动培训新计划。我能保持前行的主要原则是什么呢Q至了解两CU语aQ所以,如果某种语言q时了,你在学习新技术的时候还可以依靠另一U语a?/p>

8. 提携Ch。协助ƈ且培dU?入门的开发h员学习优U的编E方法和技巧。也怽q不知道Q在帮助他们向更高一层前q时Q你自己也在向更高一层提升,你会更加自信?/p>

9. 化算法。代码如恉Q在你完成编码后Q应回头q且优化它。从长远来看Q这里或那里一些的改进Q会让后来的支持人员更加L?/p>

10. ~写文。无论是Web服务的APIQ还是一个简单的c,你尽量编写相应文。我曄引以的代码注释,因过度注释而有人指责。给三行代码加一行注释,只需要你几秒旉。如果那是一个比较难以理解的技术,千万别担心过多注释。如果你能很好做好自q工作Q大多数架构师、后备程序员、支持组都会感激你?/p>

11. 试、测试再试。我是一名黑盒测试粉丝。当你完成编码后Q你“被认?#8221;的时候就开始了。如果你们公司有QA部门Q如果你的代码中有错误,那你得到的评论,会比目l理q多。如果你不彻底测试自q代码Q那恐怕你开发的׃只是代码Q可能还会声名狼藉?/p>

12. 庆祝每一ơ成功。我见过很多E序员在解决~程技术难题后Q会和同伴握手、击掌或甚至手舞。每个h在生命中都会到“悟”。如果一个程序员高兴地跑来叫你去看他的非凡代码,也许你已l看q这L代码100遍了Q但你也应该Zq个家伙而庆第101ơ?/p>

13. l常查代码?在公司,你的代码要经常检查(包括自查和其他同事检查)。不要把别h的检查,看成是对代码风格的苛求。应该把它们看作是有性的批评。对个h来说Q经常检查你的代码ƈ且自问,“我怎样才能写得更好呢?” q会加速你的成长,让你成ؓ一个更优秀的程序员?/p>

14. 回顾你的代码。在看到自己以前的代码时Q通常会有两种方式Q?#8220;难以至信Q这代码是我写的”?#8220;难以至信Q这代码是我写的”。第一U往往是厌恶的语气Qƈ在想如何改进它。你也许会惊叹,旧代码也能复zLZU更好的E序Q甚x一个完整的产品。第二种通常带着惊奇和成感。开发h员应该一C个自己完成的目成果Q能让众Z而立q注目而观的项目。同PZ你优的~程能力Q你可以把过ȝE序或项目拿出来Q把它们更新为更加优U的品或x?/p>

15. q默是不可缺的。在?0q的开发生涯中Q我q没有碰到哪位程序员是没有幽默感的。实际上Q干我们q行Q幽默是一必备品?/p>

16. 谨防那些无所不知的程序员Q不愿分享的E序员,q有l验不的程序员。当你遇到这几种E序员时Q你自己要谦虚。无所不知的程序员Q更惛_一个英雄而不是团队成员;保守的程序员则是在编写着他们独n的代码;而经验不的E序员则会每十分钟就来问你一下,当代码完成后Q代码已l是你的Q而不是他们?/p>

17. M目都不会那么简单。朋友、家人和同事曾请求我仓促做一些事情,仓促做一个程序或者网站。对于这L事,应该从双方做计划Q才能做Zo两方都会满意的东ѝ如果某v初只是需要一个用Microsoft Access的、只有有3个页面的|站Q但来就很可能变成一个有15个页面的|站Qƈ使用SQL ServerQ有一个论坛,q有一个定制的CMSQ内容管理系l)?/p>

18. M时候不要想当然。假如你承接一个简单的目Q你可能会认为某个部分可以轻村֮成。千万别q样惻I除非你有一个类、组件、或者一D已l写好的代码Qƈ且在现有的项目已l测试通过。不要认是很容易的?/p>

19. 没有已经完成的Y件。曾l有一位程序员告诉我,没有软g是已l完成的Q它只是“暂时完成?#8221;。这是明智的忠告。如果客戯在用你写的E序Qƈl受了时间的考验。如果有ZQ你仍在更新它,qƈ不是什么坏事,q让你不断地前行?/p>

20. 耐心是一U美得当客户、朋友或家庭成员用电脑的时候,他们也许会受挫,q而想砸电脑,或气冲冲地离开。我一直在告诉他们Q?#8220;是你掌控电脑Q不是电脑掌控你?#8221;对于用作~程的电脑,你要有一定的耐心。一旦程序员知道问题所在后Q他们就会站在电脑的角度看问题,q且?#8220;哦,q就是ؓ什么它是这样做?#8221;



kxbin 2012-09-05 17:10 发表评论
]]>
put和put_line区别http://www.tkk7.com/kxbin/articles/387112.htmlkxbinkxbinWed, 05 Sep 2012 08:58:00 GMThttp://www.tkk7.com/kxbin/articles/387112.htmlhttp://www.tkk7.com/kxbin/comments/387112.htmlhttp://www.tkk7.com/kxbin/articles/387112.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387112.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387112.html在学习PL/SQL脚本Ӟ打印语句是用得最多的语句?/p>

在Oracle中,又有两种打印的方法:put和put_line?br />它们的区别是Q?br />putQ不换行输出Q输出在~冲区,不显C出来,直到执行put_line才一q输出?br />put_line:换行输出。但首先会输出缓冲区中的内容Q然后清I缓冲区?/p>

下面举个例子来帮助理解?br />输入Q?br />begin
dbms_output.put_line(1);1
end;
/
打印Q?

输入Q?br />begin
dbms_output.put(2);
end;
/
没有打印M内容

再输入一ơ:
/
仍然没有打印M内容

输入Q?br />begin
dbms_output.put_line(3);
end;
/
问题Q现在输出的l果是什么?
你可以把你认为的输出l果写在U怸Q注意要包含回RW?/p>

分析Q?br />W一ơ执?#8220;put(2)”Q在~冲Z产生“2”Q?br />再输?#8220;/”执行上次的代码,在缓冲区中?#8220;22”Q?br />执行“put_line(3)”Q首先输出缓冲区?#8220;22”,再输?#8220;3”和一个回车符?br />所以最后输出的内容(?#8220;-------------------”隔开?是Q?br />-------------------
223

-------------------
结Q?br />1、如果输出时不需要换行,则用put()ҎQ不q内Ҏ在缓冲区Q在后面执行put_line()时才会一q输出?br />2、如果输出时需要换行,则用put_line()?/p>

kxbin 2012-09-05 16:58 发表评论
]]>
oracle变量2http://www.tkk7.com/kxbin/articles/387110.htmlkxbinkxbinWed, 05 Sep 2012 08:25:00 GMThttp://www.tkk7.com/kxbin/articles/387110.htmlhttp://www.tkk7.com/kxbin/comments/387110.htmlhttp://www.tkk7.com/kxbin/articles/387110.html#Feedback0http://www.tkk7.com/kxbin/comments/commentRss/387110.htmlhttp://www.tkk7.com/kxbin/services/trackbacks/387110.html使用变量可以保存计算机需要处理的数据Qؓ了给该变量分配适当的内存空_q需要指定数据类型,有的数据cdq需要指定长度,如字W串?br />有些cd可以用于(如char)Q有些则不能(如booleanQrowtype)?br />同样是字W串Q徏表时的限制ؓ4000,在脚本中则ؓ3万多?/strong>

单语法:变量?数据cd; 
完整语法Q变量名 [constant] 变量cd [not null] [default ?| :=值]

其中“[ ]”表示可以不写Q?#8220;|”表示任选其一?/strong>

下面l出变量定义及解释,数据cd先用时所用的数据cdQ?br />v1 charQ?br />说明Q没有给出长度,所以v1只能保存一个字W。超q了则会出错Q数字或值错?: 字符串缓冲区太小?/strong>

v2 varchar2(10); 
说明Qv2最多只能保?0个字W。如果不写长度,会出错:字符串长度限制在范围(1...32767)

v3 number; 
说明Qv3保存的数字范围非常大Q几乎可以认为是没有限制的?/strong>

v4 number(5);
说明Qv4最多能够保?位整数。如果有数QOracle会自动四舍五入。如果整数部分超q?位,则会报错Q数字或值错?: 数值精度太高?/strong>

v5 number(5,2);
说明Qv5最多能够保?位整?2位小数。如果小C不止2位,则Oracle会自动四舍五入。整C过3位会报错Q同上?/strong>

v6 date;
说明Q可以直接保存sysdate的|如果是指定日期,则要用to_date来{化。否则报错:文字与格式字W串不匹配?/strong>

定义了变量,变量的默认gؓI,此时q行计算Q结果一定ؓNULL。所以变量必d始化?br />初始化有三种方式Q?/strong>
v7 constant number := 100;
说明Q定义v7为常量,定义时就必须l定倹{然后在E序中就不能再对v7q行赋gQ否则会报错Q表辑ּ 'V7' 不能用作赋值目标?/strong>

v8 number default 10;
说明Q定义v8时就l定默认?0。注意,numbercd变量的默认g?,而是NULL?/strong>

v9 number not null := 1000.50;
说明Q定义v9变量不能为空Q此时必ȝZ个不为NULL的倹{在q行时发现v9为NULLQ则报错Q说明ؓ NOT NULL 的变量必L初始化赋倹{?/strong>

预测各打印结果,如果代码有错误请先改正:
declare 
v1 char;
v2 varchar2(10);
v3 number;
v4 number(5);
v5 number(5,2);
v6 date;
v7 number default 10;
begin 
v1:='ab'; 
v2:='abcd';
v4:=9998.99;
v5:=1000.5555555;
v6:=to_date('2002-10-2','yyyy-mm-dd');
dbms_output.put_line(v1);
dbms_output.put_line(v2);
dbms_output.put_line(v3+100);
dbms_output.put_line(v4);
dbms_output.put_line(v5);
dbms_output.put_line(v6);
dbms_output.put_line(v7+100);
end;

只能在脚本中使用的变量类型:
上面的数据类型,同时在徏表时也能使用。而下面的数据cd只能在PL/SQL脚本中用?br />卻IbooleanQtypeQrowtypeQrecordQ替代变量、tablecd?br />其中Q?br />·一个变量只能保存一个|叫做“标量变量”。如Qchar、type?br />·一个变量只能保存多个|叫做“复合变量”。如Qrowtype、record,table?/strong>

1、布类?boolean 
booleancd主要表达真或假。可以ؓbooleancd变量赋值true或false?br />主要用于PL/SQL脚本的流E控制?/strong>

CZQ?br />declare 
v1 boolean;
begin 
v1:=1>2;
dbms_output.put_line(v1);
end;

问题Q打印的l果是什么,是true、false??Q?br />回答Q?br />都不寏V运行时得到错误信息Q调?'PUT_LINE' 时参C数或cd错误?br />q是因ؓ在脚本中不能直接打印booleancd的|所以只能在脚本中用if语句来判断?/strong>

修改CZQ?br />declare 
v1 boolean;
begin 
v1:=1>2;
if(v1)then 
     dbms_output.put_line('?);
else 
    dbms_output.put_line('?);
end if;
end; 
打印Q?br />?/strong>

2、typecd?br />语法Q表.字段%TYPE
q回Q某个表的字D늚实际cd?br />作用Q?br />PL/SQL脚本中,有时定义的变量就是存取表中数据的。此时数据类型及长度需要与字段的定义一致。可以去查看该字D늚具体cdQ但q样做很ȝQƈ且当字段定义改变Ӟ脚本也需要修攏V?br />所以用typecd来引用该字段的类型,更方便,l护性更好?/strong>


CZQ根据工h询员工姓名?br />分析Q要从emp表中获取姓名Q必要用查询语句。而要从查询语句中获取q回的|要加?#8220;into 变量”?/strong>

declare
    v_empno emp.empno%type;
    v_ename emp.ename%type;
begin
    v_empno:=7900;
    select ename into v_ename from emp where empno=7900;
    dbms_output.put_line(v_ename);
end;


3、rowtypecd
语法Q??rowtype
作用Q?保存了某一行记录的所有字D늚倹{?/strong>


CZQ根据工号ؓ7900的员工的以下信息:ename,job,sal,comm,hiredate?br />W一U:如果用typecdQ定?个变量保存查询结果。代码略?br />W二U:如果用rowtypecdQ只需要定义一个rowtypecd的变量?/strong>

代码Q?br />declare
    v_empno emp.empno%type;
    v_row emp%rowtype;
begin
    v_empno:=7900;
    select * into v_row from emp where empno=7900;
    dbms_output.put_line('ename='||v_row.ename);
    dbms_output.put_line('job='||v_row.job);
    dbms_output.put_line('sal='||v_row.sal);    
    dbms_output.put_line('comm='||v_row.comm);
    dbms_output.put_line('hiredate='||v_row.hiredate);    
end;
打印Q?br />ename=JAMES
job=CLERK
sal=950
comm=
hiredate=03-12?81

说明
·必须select *Q或者根据表l构的顺序写出所有字D名?br />·使用rowtypecd最主要的限制在于表中不能有大对象字D如QCLOB、BLOB?/strong>

4、recordcd
record的意思是“记录”?br />有时Q用typecd会定义太多的变量Q用rowtype又会取到自己不关心的数据?br />如何只取自己兛_的字D늚值呢Q此时就用recordcd来自定义有多个列?br />语法Q?br />type cd?is record(
   属性名1 属性类?
   属性名2 属性类?br />);
注意
1、属性之间定义用的是逗号(,)Q不是分?;)?br />2、最后一个属性名不需要再?#8220;Q?#8221;?/strong>

使用步骤有两个:
1、先用type自定义一个新的类型,q个cd的变量能够的变量与定义有兟?br />2、再用这个新的类型来定义一个变量,q个变量才能保存实际的数据?/strong>

CZQ需求同上?br />declare
--自定义一个类?br />type myType is record(
    xm emp.ename%type, --姓名
    gzuo emp.job%type, --工作
    gzi emp.sal%type --工资
);
--使用自定义类型来定义变量
myValue myType;
begin
    select ename,job,sal into myValue from emp where empno=7844;
    dbms_output.put_line('ename='||myValue.xm);
    dbms_output.put_line('job='||myValue.gzuo);
    dbms_output.put_line('sal='||myValue.gzi);
end;

说明Q?br />· 在查询时必须与自定义cd的属性顺序一一对应?br />·myValue中的属性名也是自定义的Q不是字D名?br />
问题Q上面的代码比直接用typecdq多些,看不Z势在什么地斏Vؓ什么还要用recordQ?br />回答Q?br />在项目中Q自定义cd通常会放到在?packageQ后面会专门学习)中,q样可以在其它地方直接引用了?br />
CZQ?br />先在包中自定义类型:
create or replace package my_bao
as
type myType is record(
    xm emp.ename%type, --姓名
    gzuo emp.job%type, --工作
    gzi emp.sal%type --工资
);
end;
然后可以在块中直接使用该类型,只不q在cd前要加上包名:“my_bao”?br />declare
--使用包中自定义类型来定义变量
myValue 
my_bao.myType;
begin
    select ename,job,sal into myValue from emp where empno=7844;
    dbms_output.put_line('ename='||myValue.xm);
    dbms_output.put_line('job='||myValue.gzuo);
    dbms_output.put_line('sal='||myValue.gzi);
end;

5、替代变?br />语法Q?&替换内容
作用Q提供用戯入的界面Q在用户输入数据以后Q先替换PL/SQL脚本Q再~译执行?/strong>

案例一Q输入年龄,然后打印出来
SQL> declare
2   v_age number(3);
3 begin
4    v_age:=&q龄;
5    dbms_output.put_line('您的q龄?= '||v_age);
6 end;
7 /
输入 q龄 的? 20
原?nbsp;   4:   v_age:=&q龄;
新?nbsp;   4:   v_age:=20;

说明Q在用户输入“20”以后Q将“&q龄”替换Z“20”。于是脚本的源代码发生了改变Q?br />declare
v_age number(3);
begin
v_age:=20;
dbms_output.put_line('您的q龄?= '||v_age);
end;

所?#8220;&”变量q不是一个真正的变量Q它不能保存M内容Q只是提供一个字W串替换的功能?/strong>


案例二:用户输入姓名q打印?br />declare
v_age varchar2(3);
begin
v_age:=&姓名;
dbms_output.put_line('您的姓名?= '||v_age);
end;
问题Q如果用戯?#8220;a”Q程序是否能够运行,如果能,打印的结果是什么?
分析Q当用户输入“a”Q上面代码就是:
declare
v_age varchar2(3);
begin
v_age:=a;
dbms_output.put_line('您的姓名?= '||v_age);
end;
׃“a”前后没有单引P所以会被当?#8220;标识W?#8221;卛_作变量名?br />但是aq个变量又没有定义。所以一定会提示如下的错误:
必须说明标识W?'A'

解决的方法就是:?#8220;&”前后加上单引P卻I
declare
v_age varchar2(3);
begin
v_age:='&姓名';
dbms_output.put_line('您的姓名?= '||v_age);
end;
/

替代变量结Q?br />·替代变量的作用主要是为匿名块提供一个数据录入的界面?br />·替代变量只是完成字符串替换的功能Q不能保存倹{?br />·如果替代变量是字W串Q则必须加上单引受?/strong>

说明Q如果是命名块,则通过名称和参数进行调用,此时不会再用替代变量?/strong>

6、tablecd
tablecd叫做“表类?#8221;Q又?#8220;索引表类?#8221;?br />注意Q都是指PL/SQL脚本中的tablecdQ而不是数据库的对象?/strong>

在学习tablecd之前Q先看一个Q务?/strong>

需求:用户输入10,打印P输入20,打印奟?br />Ҏ一Q用分支语句(if……{?判断?br />Ҏ二:h考,能不能不用判断语句。这个Q务同样适用于java学习者?/strong>

Ҏ一Q?br />declare
v_sex_code number(2);
v_sex_name char(2);
begin
v_sex_code:=&性别~号;
if(v_sex_code=10)then
     v_sex_name:='?;
else
    v_sex_name:='?;
end if;
dbms_output.put_line('您的性别?= '||v_sex_name);
end;

用户输入Q?0
打印Q??/strong>


Ҏ二:使用tablecd?br />语法Qtype cd?is table of 值类?index by 索引cd?br />
说明Q?br />·作用Q定义了一个表格结构,q个表格只有2个列用于保存“索引(?值对”Q这样就可以方便地通过索引扑ֈ倹{?br />     如:10=甗?0=奻I其中10,20叫做烦引,通过10,20p够找到性别名称Q男和女
·值类型:指实际保存的数据的类型。如男和奟?br />·索引cdQ通常指定Z面两U整数类型之一Qbinary_integer 或?pls_integer。区别是Q?br />          ·Binary_Integercd变量D是由Oracle来执行,不会出现溢出Q但是执行速度较慢Q因为它是由Oracle模拟执行?br />         ·Pls_Integer的执行是q件即直接由CPU来运,因而会出现溢出Q但其执行速度较前者快许多。Oracle旧版本不支持?/strong>


需求:用户输入10,打印P输入20,打印奟?br />分析Q?br />·Ҏ上面的需求,值是“?#8221;或?#8220;?#8221;Q所以只需要char(2)可以了?br />·在数据量不是太大Ӟ可以选择索引的类型ؓQpls_integer?/strong>

代码Q?br />declare
--1.定义表结?br />type myTabType is table of char(2) index by pls_integer;
--2.创徏表类型变?br />sexTab myTabType;

v_sex_code number(2);
v_sex_name char(2);
begin
--3.插入数据Q?br />sexTab (10):='?;
sexTab (20):='?;
--用户输入
v_sex_code:=&性别~号;

--4. 查询数据(如:sexTab (10) 表示“查询索引?0的|得到 ?#8221;)
v_sex_name:=sexTab (v_sex_code);

dbms_output.put_line('您的性别?= '||v_sex_name);
end;

说明QsexTab在插入数据以后,在内存结构如下:
index    ?br />10          ?br />20          ?/strong>

使用tablecd也可以查询多行多列的数据?/strong>

需求:查询所有部?/strong>

declare
--定义表结?省略了index byQ见说明)

type myType is table of dept%rowtype;
--创徏表类型变?br />myTab myType;
begin

select * bulk collect into myTab from dept;
for x in 1..myTab.count
loop
   dbms_output.put_line(myTab(x).deptno);
   dbms_output.put_line(myTab(x).dname);
end loop;

end;

说明Q?/strong>

·本列中myTab的烦引是q序ؓ索引赋|所以index by语句可以省略?/strong>

· 查询的所有部门放到myTabQ烦引自动设|ؓ1,2,3…

打印Q?/strong>

10
ACCOUNTING
20
RESEARCH
30
SALES
40
OPERATIONS

探讨Q有关PL/SQL表类型中的理解?br />·很容易认为PL/SQL表类型象c或Java中的数组cdQ因为其中有个关键字叫做“index”(索引)Q而数l的下标也叫?#8220;index”?br />·但是q样无法解释PL/SQL表类型的索引可以不连l,甚至可以数的问题?br />·我认为,PL/SQL表类型更象是java中的map对象Q烦引就对应map中的键,多个g间的键可以不q箋Q可以ؓ负数Q甚臛_以是字符丌Ӏ两者有异曲同工之妙?/strong>

CZQ用字符串做索引?br />declare
--定义表结?br />type myTabType is table of char(2) index by varchar2(5);
sexTab myTabType;

v_sex_code varchar2(5);
v_sex_name char(2); 
begin
--往表中d内容
sexTab('nan'):='?;
sexTab('nv'):='?;
--用户输入
v_sex_code:='&性别~号';
v_sex_name:=sexTab(v_sex_code);

dbms_output.put_line('您的性别?= '||v_sex_name);
end;

输入Qnan
输出: ?br />
问题Q用tablecd能够保存多个列吗Q?br />回答Q?br />可以。只要将“值类?#8221;换ؓ复合cd可以了。如下面的table定义p够保存emp表的所有记录:
type empTabType is table of emp%rowtype index by pls_integer?br />注意QempTabType的烦引可以是empnoQ也可以不是?/strong>

联想一下下Q?br />·在PL/SQL表中Q利用PL/SQL表类型,在某些场合也能够避免减少表连接,从而大大提高连接的效率?br />·在java中map对象用途非常广泛,可以~存很多对象(如配|文件对象,常见的查询结果对象等)。两者的用法真的是异曲同工之妙?/strong>

7、其它类?br />·嵌套表、数l:用得,不学了?br />·游标cdQ引用游标类型:在后面学习游标以后再学习?/strong>

主要内容结Q?br />·块结构:变量区、代码区、异常区
·块分c:匿名块、命名块(具体的在后面学习)
·标量cdQchar,varchar2,number,date,boolean,type 
·复合cdQrowtype,record,table

个h结Q?br />·保存一个值的变量Q可以用具体的数据或者typecd

·保存多个值的变量Q可以用rowtypeQrecord?/strong>

·保存多行2列的变量Q可以用tablecd?/strong>

·保存多行多列的变量,仍然用tablecdQ只?/strong>数据cd选用rowtype卛_?/strong>



kxbin 2012-09-05 16:25 发表评论
]]>
վ֩ģ壺 ŮƵվm| ˳ɶ߲r18| 97߹ۿƵ| AVɫ߹ۿ| ɫרһ| ձ˳Ļ| av߾Ʒ޵һվ| ޾Ʒ˳߹ۿ鶹| ɫͼУ԰ɫ| һ| ۺɫ| ɫʹۺ߹ۿ| ޹˾þһ| ר˿| AžƷһ| A˵߹ۿ| ҹAëƬƵ| EEUSSӰԺWWW߹ۿ| CAOPORNƷƵ| ȫƵѹۿӾ| ˵վ| ޳ѵӰ| ѹۿվ߲| պȫƵۿѹۿ | ۾ƷҹӰ| ޾ƷƵۿ| ާѡþþþƷ9966| AVרAV鶹Ѿ| һɫƬѹۿ| Ƶ| 99һ | þùƷһ| ҹ뾫Ʒѿ| 91Ʒȫѹۿ߲| ɱƬav| AV˾þԭ | 18ڵվ| ůůѸձһ| ޹˾þۺһ77 | һ϶| ޳AV߹ۿ|