fixed_date , 赋权技巧 ,procedure执行方式, PL/SQL注意的地方
本文讨论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注意的地方的更多相关文章
- SQL Select count(*)和Count(1)的区别和执行方式及SQL性能优化
SQL性能优化:http://www.cnblogs.com/CareySon/category/360333.html Select count(*)和Count(1)的区别和执行方式 在SQL S ...
- oracle PL/SQL(procedure language/SQL)程序设计
PL/SQL(procedure language/SQL)语言是Oracle对SQL语言的过程化扩充,是一个完整的编程语言.PL/SQL实现了过程化语句(如分支.循环等)与SQL语句的无缝连接,将过 ...
- SQLPLUS执行PL/SQL语句块
1.首先登录Oracle HR schema: 2.对于PL/SQL程序,分号表示语句的结束:而使用 "." 号表示整个语句块的结束,也可以省略.按回车键后,该语句块不会执行,即 ...
- Oracle实战笔记(第六天)之PL/SQL基础
一.PL/SQL介绍 1.概念 PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/SQL是Oracle数据库对SQL语句的扩展.在普通SQL语 ...
- pl/sql的介绍
为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...
- Oracle中PL/SQL的循环语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- PL/SQL 训练12--动态sql和绑定变量
--什么是动态SQL?动态PL/SQL--动态SQL是指在运行时刻才构建执行的SQL语句--动态PL/SQL是指整个PL/SQL代码块都是动态构建,然后再编译执行 --动态SQL来可以用来干什么? - ...
- Oracle之PL/SQL编程
PL/SQL(Procedural Language/SQL,过程语言/SQL) 是结合了Oracel过程语言和结构化查询语言(SQL)的一种扩展语言. 优点: (1)PL/SQL具有编程语言的特点, ...
- Oracle之PL/SQL学习笔记
自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...
随机推荐
- css的一些命名规范
网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容篇. 常用DIV+CSS命名大全集合,即CSS命名规则 D ...
- P2420 让我们异或吧(倍增)
题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...
- day-06 文件读写
# # -*- coding: utf-8 -*-''' r 读 w 写 a 追加写 r+ 读写 w+ 读写 a+读写 rb 读字节 wb 写字节 w r 是文本 rb wb非文本 ../ (相对路径 ...
- Unity基本操作
主要内容: C#学习 Unity项目 打砖块:BreakBricks Unity操作 Unity操作: 调试 碰撞体 触发器 视角 键盘视角平移 光照贴图 游戏对象Gameobject 访问对象 实体 ...
- 【转】深入理解Java多态原理
之前一直知道多态是什么东西,平时敲代码也经常用到多态,但一直没有真正了解多态底层的运行机制到底是怎么样的,这两天才研究明白点,特地写下来,跟各位同学一起进步,同时也希望各位大神指导和指正. 多态的概念 ...
- RHEL6.5安装成功ORACLE11GR2之后,编写PROC程序出错解决方法
1. proc: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: N ...
- 【洛谷2469/BZOJ1927】[SDOI2010]星际竞速(费用流/最小路径覆盖)
题目: 洛谷2469 分析: 把题目翻译成人话:给一个带边权的DAG,求一个路径覆盖方案使路径边权总和最小.从点\(i\)开始的路径需要额外加上\(A_i\)的权值. 回xian忆chang一xue下 ...
- mariadb的安装
mysql (分支 mariadb)1.安装mariadb -yum -源码编译安装 -下载rpm安装 yum和源码编译安装的区别? 1.路径区别-yum安装的软件是他自定义的,源码安装的软件./co ...
- fieldset ----- 不常用的HTML标签
fieldset 元素可将表单内的相关元素分组. <fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fieldset> 标签内时 ...
- [Windows Server 2012] 网页Gzip压缩
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:启用网站GZI ...