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多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...
随机推荐
- zhw大神线段树姿势
; i<; i++) tree[i][]=tree[i][]=i; ; i>=; i--) tree[i][]=tree[i+i][], tree[i][]=tree[i+i+][]; v ...
- Kubernetes 配置 Taint 和 Toleration(污点和容忍)
通过污点和容忍让pod运行在特定节点上 参考官网:https://k8smeetup.github.io/docs/concepts/configuration/taint-and-toleratio ...
- vue+nodejs+express解决跨域问题
nodejs+express解决跨域问题,发现网上的大部分都是误导人,花了不少时间,终于弄懂了, 我在vue+nodejs+express+mongodb的项目里面,发现本地用vue代理正常调用远程的 ...
- JavaScript入门三
*********BOM和DOM******** JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 Java ...
- EasyUI系列学习(二)-使用EasyUI
一.引入必要文件 <!--1.0引入jQuery核心库--> <script src="jquery-easyui-1.4.4/jquery.min.js"> ...
- js面试笔试题
1. Js的Typeof返回类型有那些? string:undefined:number; function:object:boolean:symbol(ES6) 2. null和undefined的 ...
- x264
x264 x264 h264 1. x264调用主要过程 x264_param_default():设置参数集结构体x264_param_t的缺省值. x264_picture_alloc():为 ...
- html5——颜色
CSS2 1.opacity,可以设置透明度,但是父盒子设置了透明度会影响子盒子 CC3 1.transparent属性,但是不可改变透明值 2.rgba():r--red g--green b--b ...
- Python标准库sys
1.命令行参数sys.argv 我们从Python语言之模块第一部分的例子开始,看看sys.argv中到底存了些什么内容. #Filename: using_sys.py import sys i=0 ...
- OpenCV3 Java 机器学习使用方法汇总
原文链接:OpenCV3 Java 机器学习使用方法汇总 前言 按道理来说,C++版本的OpenCV训练的版本XML文件,在java中可以无缝使用.但要注意OpenCV本身的版本问题.从2.4 到3 ...