本文讨论4个知识点,

1. fixed_date参数

2. 赋权技巧

3. procedure执行的方式

4. PL/SQL中要注意的几个地方

fixed_date参数

客户想修改oracle的 系统时间做测试,但oracle的默认系统时间是读取其所在server的系统时间的,所以不能随便修改。不过可以修改fixed_date参数,该参数的作用就是让sysdate在oracle中返回指定的值,便于测试。 命令如下:

设置时间

alter system set fixed_date='2014-06-20-14:23:33';

取消设置

alter system set fixed_date=none;

赋权技巧

这个命令需要alter system权限,所以如果想让普通用户执行这个命令就要赋权 alter system 给普通用户,这样赋权不对,所以我们用如下方式赋权

首先创建一个procedure

create or replace procedure set_fixed_time( v_time dba_objects.OBJECT_NAME%TYPE)
as
begin
execute immediate 'alter system set fixed_date='||chr(39)||v_time||chr(39) ;
end;
/

然后让普通用户具有该procedure的执行权限以及同义词

SQL> create synonym myuser.set_fixed_time for set_fixed_time;

Synonym created.

SQL> grant execute on set_fixed_time to myuser;

Grant succeeded.

这样普通用户就可以设置时间了。

procedure执行的方式

这里要注意的几点是,普通用户 myuser 并没有alter system的权限,但是可以正常运行procedure set_fixed_time 这是因为procedure在执行的时候使用的是其定义者的权限。

PL/SQL中要注意的几个地方

PL/SQL代码有很多奇怪的规范,当然也可能是这些规范有特定的意义。这里列举出来,如果不知道,在写PL/SQL的时候会很头疼。

create or replace procedure set_fixed_time( v_time dba_objects.OBJECT_NAME%TYPE)
as
begin
execute immediate 'alter system set fixed_date='||chr(39)||v_time||chr(39) ;
end;
/

这段代码中 v_time 的类型定义必须用表名.列名%TYPE的形式,如果你用varchar2(800)这种直接的类型,则会出错。

PL/SQL代码中执行SQL语句必须用 execute immediate sql_statement. sql_statement有如下几点要求。

1. 必须用''括起来

2. 正常的SQL_STATEMENT可能是带有;的 但是在这个''里面不能加;

fixed_date , 赋权技巧 ,procedure执行方式, PL/SQL注意的地方的更多相关文章

  1. SQL Select count(*)和Count(1)的区别和执行方式及SQL性能优化

    SQL性能优化:http://www.cnblogs.com/CareySon/category/360333.html Select count(*)和Count(1)的区别和执行方式 在SQL S ...

  2. oracle PL/SQL(procedure language/SQL)程序设计

    PL/SQL(procedure language/SQL)语言是Oracle对SQL语言的过程化扩充,是一个完整的编程语言.PL/SQL实现了过程化语句(如分支.循环等)与SQL语句的无缝连接,将过 ...

  3. SQLPLUS执行PL/SQL语句块

    1.首先登录Oracle HR schema: 2.对于PL/SQL程序,分号表示语句的结束:而使用 "."  号表示整个语句块的结束,也可以省略.按回车键后,该语句块不会执行,即 ...

  4. Oracle实战笔记(第六天)之PL/SQL基础

    一.PL/SQL介绍 1.概念 PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/SQL是Oracle数据库对SQL语句的扩展.在普通SQL语 ...

  5. pl/sql的介绍

    为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...

  6. Oracle中PL/SQL的循环语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  7. PL/SQL 训练12--动态sql和绑定变量

    --什么是动态SQL?动态PL/SQL--动态SQL是指在运行时刻才构建执行的SQL语句--动态PL/SQL是指整个PL/SQL代码块都是动态构建,然后再编译执行 --动态SQL来可以用来干什么? - ...

  8. Oracle之PL/SQL编程

    PL/SQL(Procedural Language/SQL,过程语言/SQL) 是结合了Oracel过程语言和结构化查询语言(SQL)的一种扩展语言. 优点: (1)PL/SQL具有编程语言的特点, ...

  9. Oracle之PL/SQL学习笔记

    自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...

随机推荐

  1. css的一些命名规范

    网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容篇. 常用DIV+CSS命名大全集合,即CSS命名规则 D ...

  2. P2420 让我们异或吧(倍增)

    题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...

  3. day-06 文件读写

    # # -*- coding: utf-8 -*-''' r 读 w 写 a 追加写 r+ 读写 w+ 读写 a+读写 rb 读字节 wb 写字节 w r 是文本 rb wb非文本 ../ (相对路径 ...

  4. Unity基本操作

    主要内容: C#学习 Unity项目 打砖块:BreakBricks Unity操作 Unity操作: 调试 碰撞体 触发器 视角 键盘视角平移 光照贴图 游戏对象Gameobject 访问对象 实体 ...

  5. 【转】深入理解Java多态原理

    之前一直知道多态是什么东西,平时敲代码也经常用到多态,但一直没有真正了解多态底层的运行机制到底是怎么样的,这两天才研究明白点,特地写下来,跟各位同学一起进步,同时也希望各位大神指导和指正. 多态的概念 ...

  6. RHEL6.5安装成功ORACLE11GR2之后,编写PROC程序出错解决方法

    1.  proc: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: N ...

  7. 【洛谷2469/BZOJ1927】[SDOI2010]星际竞速(费用流/最小路径覆盖)

    题目: 洛谷2469 分析: 把题目翻译成人话:给一个带边权的DAG,求一个路径覆盖方案使路径边权总和最小.从点\(i\)开始的路径需要额外加上\(A_i\)的权值. 回xian忆chang一xue下 ...

  8. mariadb的安装

    mysql (分支 mariadb)1.安装mariadb -yum -源码编译安装 -下载rpm安装 yum和源码编译安装的区别? 1.路径区别-yum安装的软件是他自定义的,源码安装的软件./co ...

  9. fieldset ----- 不常用的HTML标签

    fieldset 元素可将表单内的相关元素分组. <fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fieldset> 标签内时 ...

  10. [Windows Server 2012] 网页Gzip压缩

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:启用网站GZI ...