Oracle多表联合更新
以下是在后台更新易拓ERP数据库时遇到的一个问题:
1.在DB14数据库中将料件号P44开头,并且品名为"塑料袋"的料件改为消耗性料件.
这个简单: UPDATE DB14.ima_file SET ima70 = ‘Y’ WHERE ima01 like ‘P44%’ AND ima02 = ‘塑料袋’;
2.在以B021开头的工单中,相应的下介料件的消耗性状态也作相应变更. 这个麻烦涉及bmb表和ima表才能确定要更改的记录(因为限定了品名).不能直接用UPDATE,最后写了一个存储过程如下:
DECLARE CURSOR my_table IS (SELECT bmb01,bmb03
from DB14.bmb_file,DB14.ima_file
WHERE bmb03 = ima01
AND bmb01 LIKE 'B021%'
AND bmb03 LIKE 'P44%' AND ima02 = '塑料袋');
BEGIN
FOR tab IN my_table LOOP
UPDATE DB14.bmb_file
SET bmb15 = 'Y'
WHERE bmb01 = tab.bmb01 AND bmb03 = tab.bmb03;
END LOOP;
END;
这样一来要是还有相同条件下的其他表要更新的话,可直接在FOR LOOP里面加上.
最后,其实我也是傻了.单就解决现有问题而言完全可以:
UPDATE DB14.bmb_file SET bmb15 = 'Y'
WHERE bmb01 LIKE 'B021%'
AND bmb03 IN (SELECT ima01
from DB14.ima_file
相关文档:
Oracle中的日期和字符串互相转换
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
Year:
yy two digits 两位年 ......
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)(SID_DESC =
&nb ......
Oracle数据库的启动用到了初始化参数,一般情况下可以在sqlplus里用show parameter 来获得。而Oracle数据库为了debug 或者解决一些特殊的问题,还提供了一些以“_”开头的隐含参数。 网络上有一些script可以让我们轻松检查这些隐含参数. 下面我们来详细介绍一下如何直接在sqlplus 用show parameter来获取隐含参数 ......
http://hi.baidu.com/fyears/blog/item/5ef68ac3feb9a45db219a836.html
select object_id,session_id,locked_mode from v$locked_object;
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
alter system ki ......
oracle变量类型
标量类型
varchar2(n) 用于定义可变长度的字符串 n用于指定字符串的最大长度 其最大值为32767字节 必须指定n
char(n) 用于定义固定长度的字符串 其中n用于指定字符串的最大长度,其最大值为32767 如果不指定n 默认是1
number(p,s)该数据类型用于定义固定长度的整数和浮点 ......