科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道oracle笔记

oracle笔记

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  --1---   --对于游标进于update(行锁)的操作实验   /*   declare    x number;    mc varchar(20);    cursor findtest is select id,myname from

作者:中国IT实验室 来源:中国IT实验室 2007年10月5日

关键字: 数据库 笔记 备份 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

  --1---
  --对于游标进于update(行锁)的操作实验
  /*
  declare
   x number;
   mc varchar(20);
   cursor findtest is select id,myname from testtable FOR UPDATE;
  begin
  
  open findtest;
  fetch findtest into x,mc;
  UPDATE testtable SET myname ='myid' WHERE CURRENT OF findtest;
  DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
  close findtest;
  --update testtable set myname='ss' where id>9;
  --DBMS_OUTPUT.PUT_LINE('更新了'||SQL%ROWCOUNT||'条数据');
  
  end;
  */
  /
  
  
  --2---
  
  create or replace procedure debugout(mydir varchar,myfile varchar,myinfo varchar) as
  --进行文件写的存储过程,调用方式 debugout(目录名,文件名,字符串)
  --注意:oracel对于plsql的文件操作默认是不能对文件进行操作的.所以按下列步骤进行设定。
  --关闭数据库修改initsid.ora文件,在文件中增加utl_file_dir参数,其值为目录名
  --例如对于windows c: c:\xx unix 为/tmp /tmp/xx
  --检查目录的文件系统,确定oracle用户是否有关于该文件路径的读写权限,若不具有,则通过chmod 766 filepath
  --再启动数据库。这样,存储过程就能够正常的生成和读取文件了。
  V_NewLine varchar(100);
  v_FileHand UTL_FILE.FILE_TYPE; --文件句柄
  begin
   v_FileHand:=UTL_FILE.FOPEN(mydir,myfile,'a');
   --w 为写 r为读 a添加(文件不存在,自生成)
   UTL_FILE.PUT_LINE(v_FileHand,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss ') || myinfo);
   UTL_FILE.FCLOSE(v_FileHand);
  exception
   when UTL_FILE.INVALID_OPERATION then
   raise_application_error(-20102,'文件不能打开');
  
   when UTL_FILE.INVALID_FILEHANDLE then
   raise_application_error(-20103,'文件句柄不是打开的文件');
  
   when UTL_FILE.WRITE_ERROR then
   raise_application_error(-20105,'写操作失败');
  
   when UTL_FILE.INVALID_PATH then
   raise_application_error(-20106,'文件或目录写操作失败');
  
   end;
  
  /
  
  --3--
  --可以执行DDL及DML语句的存储过程
  CREATE OR REPLACE PROCEDURE PEXESQL(s1 varchar2) as
  i integer;
  r integer;
  begin
  --可以执行insert,update,delete(事物不提交)
  --如果是create table等命令要明文授于系统权限,对于drop table不用
  i:=dbms_sql.open_cursor;
  dbms_sql.parse(i,s1,dbms_sql.v7);
  r:=dbms_sql.execute(i);
  --commit;
  dbms_sql.close_cursor(i);
   exception when others then
  -- dbms_output.put_line('系统出了错');
   if dbms_sql.is_open(i) then
   dbms_sql.close_cursor(i);
   end if;
   --raise输出详细出错信息
  -- raise;
   dbms_output.put_line('系统出了错了,SQLCODE='||sqlcode||' sqlerrm='||sqlerrm);
  
  end;
  
  /*
  p4不能安ORACEL的问题
  原因:
  Any platform that uses the Intel Pentium 4 processor, with the
  Sun JRE and Symmantec JIT will encounter this problem. Windows NT,
  Windows 2000 and NetWare platforms are confirmed to be affected.
  
  解决办法
  1. 建个临时目录,将oracle安装盘拷贝到该目录中
  2.在该目录中搜索symcjit.dll (我找到了两个)
  3.
  4. 将symcjit.dll改名为symcjit.old.
  
  5. 运行\install\win32目录下的setup.exe 就应该可以了
  
  */
  

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章