create
创新互联主要从事成都网站建设、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务长子,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
or
replace
trigger
trg_delete_count
before
delete
on
student
for
each
row
begin
delete
from
成绩表
where
成绩表.学号=:old.学号;
commit;
end;
想要实现类似的功能,不一定要用触发器的,可以设置两个表的主键和外键,设置级联删除关系,删除主键时,外键表中的记录也会自动删除。
create or replace and compile java source named TestClass as
public class TestClass
{
public static String getName(String name) {
String name = "xoxo";
return name " with TTTT";
}
}
然后在触发器中调用:
create or replace trigger TRI_TEST before delete or update or insert on TABLENAME for each row
declare name varchar2(20);
begin
if inserting then
FUNCTION getName( who VARCHAR2 ) RETURN VARCHAR2 IS LANGUAGE JAVA NAME TestClass.getName(java.lang.String) return String';
end if;
end;
把JAVA程序LOAD进oracle
在$ORACLE_HOME/bin目录下有个LOADJAVA命令,使用这个命令将刚写好的JAVA程序LOAD进数据库。
loadjava -user test/test@test -o -v -f -r Main.java
如果成功的话,会打印出来信息提示成功,若程序有编译错误的话,也会提示你错误的地方。
3。修改权限
因为我的这个JAVA程序里涉及到对文件的读写操作,所以要先修改权限。
首先以管理员身份登录进数据库
sqlplus / as sysdba
然后执行
begin
dbms_java.grant_permission('TEST','SYS:java.io.FilePermission','/var/spool/cron/oracle','read,write,execute,delete');
end;
/
执行完毕后,在数据库里执行上述JAVA程序时,就拥有读写该文件的权限了。
4。创建存储过程
进入到数据库,我是在SQLPLUS命令行
create or replace procedure Modify(name varchar2) as language java name 'Main.modify(java.lang.String)';
/
会提示创建存储过程成功。
5。增加trigger
我是在TOAD里直接针对某个表增加trigger,所以我只写出关键部分的代码
begin
if :old.name = 'time' then
Modify(:new.value);
end if;
end;
至此,在ORACLE的trigger里调用JAVA程序就完成了,后来的实验证明,每当更新这个表时,都确实执行了该JAVA程序,完成了对文件的读写。
首先将你的java代码放在数据库里:例如
create or replace and compile java source named TestClass as
public class TestClass
{
public static String getName(String name) {
String name = "xoxo";
return name+" with TTTT";
}
}
然后在触发器中调用:
create or replace trigger TRI_TEST before delete or update or insert on TABLENAME for each row
declare name varchar2(20);
begin
if inserting then
FUNCTION getName( who VARCHAR2 ) RETURN VARCHAR2 IS LANGUAGE JAVA NAME TestClass.getName(java.lang.String) return String';
end if;
end;
oracle数据更新时触发java代码的步骤如下:
1。编写JAVA程序
public class Main {
public static void modify(String statTime)
{
String datas = "/var/spool/cron/oracle";
File data = new File(datas);
StringBuffer backup = null;
try {
StringBuffer content = new StringBuffer();
backup = new StringBuffer();
BufferedReader san = new BufferedReader(new FileReader(data));
String line = null;
while((line=san.readLine())!=null)
{
backup.append(line);
backup.append("/n");
}
content.append("15 ");
content.append(statTime.trim());
content.append(" * * * /home/oracle/task.sh");
content.append("/n");
content.append("13 ");
content.append(statTime.trim());
content.append("* * * /home/oracle/tj_task/task2.sh");
content.append("/n");
FileWriter writer = new FileWriter(data,false);
writer.write(content.toString());
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
try
{
FileWriter writer = new FileWriter(data,false);
writer.write(backup.toString());
writer.flush();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
}
注意,这里写JAVA程序不需要遵循标准的JAVA程序,一定要有main入口函数,相反,这里的函数一般不要取名为main,除非格式是标准的main 函数格式
2。把JAVA程序LOAD进oracle
在$ORACLE_HOME/bin目录下有个LOADJAVA命令,使用这个命令将刚写好的JAVA程序LOAD进数据库。
loadjava -user test/test@test -o -v -f -r Main.java
如果成功的话,会打印出来信息提示成功,若程序有编译错误的话,也会提示错误的地方。
3。修改权限
首先以管理员身份登录进数据库
sqlplus / as sysdba
然后执行
begin
dbms_java.grant_permission('TEST','SYS:java.io.FilePermission','/var/spool/cron/oracle','read,write,execute,delete');
end;
/
执行完毕后,在数据库里执行上述JAVA程序时,就拥有读写该文件的权限了。
4。创建存储过程
进入到数据库,在SQLPLUS命令行
create or replace procedure Modify(name varchar2) as language java name 'Main.modify(java.lang.String)';
/
会提示创建存储过程成功。
5。增加trigger
TOAD里直接针对某个表增加trigger,所以关键部分的代码
begin
if :old.name = 'time' then
Modify(:new.value);
end if;
end;
实现方法请具体参照《Eclipse swt/Jface核心编程》
第21章 文本处理.
21.1 文本处理概述... 409
21.2 项目实战:JavaScript编辑器... 409
21.2.1 主窗口预览... 409
21.2.2 项目文件结构... 410
21.3 主窗口模块... 411
21.3.1 代码实现... 411
21.3.2 主窗口程序代码分析... 414
21.3.3 启动主窗口程序... 416
21.4 代码着色... 417
21.4.1 源代码配置类(SourceViewerConfiguration)... 417
21.4.2 基于规则的代码扫描器类(RuleBasedScanner)... 419
21.4.3 设置代码扫描规则... 420
21.4.4 提取类(Token)和文本属性类(TextAttribute)... 423
21.5 内容辅助... 423
21.5.1 配置编辑器的内容助手... 424
21.5.2 内容辅助类... 424
21.5.3 辅助建议类(CompletionProposal)... 426
21.6 文档的撤销与重复... 427
21.6.1 文档管理器对象(DefaultUndoManager)... 427
21.6.2 撤销操作的实现... 427
21.6.3 恢复操作的实现... 428
21.7 查找与替换窗口... 429
21.7.1 窗口的界面设计... 429
21.7.2 查找功能的实现... 433
21.7.3 替换功能的实现... 434
21.8 首选项的对话框... 434
21.8.1 首选项页面的代码实现... 435
21.8.2 打开首选项页面的代码... 436
21.9 文件的打开、保存与打印... 437
21.9.1 打开文件... 437
21.9.2 保存文件... 437
21.9.3 打印文件... 438
21.10 帮助对话框... 439
21.11 其他的一些工具类... 440
21.11.1 事件管理类... 440
21.11.2 资源管理类... 441
21.11.3 程序中使用的常量... 443
21.12 本章小结... 444