当前位置: 首页 > news >正文

在您的网站首页添加标签如何自己做企业网站

在您的网站首页添加标签,如何自己做企业网站,电话百度,班级优化大师官网系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 系列文章目录前言Oracle PL/SQL基础语法学习15:静态表达式Static Expression…

系列文章目录

Oracle PL/SQL基础语法学习12:短路求值
Oracle PL/SQL基础语法学习13:比较运算符
Oracle PL/SQL基础语法学习14:BOOLEAN表达式


文章目录

  • 系列文章目录
  • 前言
  • Oracle PL/SQL基础语法学习15:静态表达式
    • Static Expressions(静态表达式)介绍
      • 静态常量
    • 官方文档Static Constants(静态常量)代码例
      • 关于AUTHID DEFINER 和AUTHID CURRENT_USER
    • 参考连接
    • 总结

【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)


前言

PL/SQL是Oracle数据库中的一种嵌入式语言,其功能强大,可以进行存储过程和函数的编写,帮助开发者快速高效地处理数据库操作。

最好的学习是实践加上看官方文档。官方文档中的代码例更是精华和重点所在。
IT行业如此,编程如此,Oracle PL/SQL的学习更是如此。

本系列将以《Database PL/SQL Language Reference》的PL/SQL代码例为主线进行介绍。

Oracle PL/SQL基础语法学习15:静态表达式

Static Expressions(静态表达式)介绍

静态表达式是一个在PL/SQL语言中用于描述一个特定值的表达式。
这个表达式在编译时可以确定其值的表达式,即它不包括字符比较、变量或函数调用,在运行时是不可改变的,常常在PL/SQL中用于初始化变量、常量、参数等。
在PL/SQL中,静态表达式可以使用常量、字面量、枚举类型等,可以使用任意组合来描述目标值。

静态常量

在一个包规范中声明静态常量的语法是:

constant_name CONSTANT data_type := static_expression; 

静态表达式的类型必须与data_type相同(BOOLEAN或PLS_INTEGER)。
静态常量必须始终作为package_name.constant_name被引用,即使是在package_name包的主体中。

官方文档Static Constants(静态常量)代码例

CREATE PACKAGE my_debug ISdebug CONSTANT BOOLEAN := TRUE;trace CONSTANT BOOLEAN := TRUE;
END my_debug;
/CREATE PROCEDURE my_proc1 AUTHID DEFINER IS
BEGIN$IF my_debug.debug $THENDBMS_OUTPUT.put_line('Debugging ON');$ELSEDBMS_OUTPUT.put_line('Debugging OFF');$END
END my_proc1;
/CREATE PROCEDURE my_proc2 AUTHID DEFINER IS
BEGIN$IF my_debug.trace $THENDBMS_OUTPUT.put_line('Tracing ON');$ELSEDBMS_OUTPUT.put_line('Tracing OFF');$END
END my_proc2;
/

这段PL/SQL代码创建了一个名为my_debug的包,其中包含两个静态常量debug和trace,类型为BOOLEAN,并在其值上分别定义为TRUE,用于控制多个PL/SQL单元中的调试和跟踪。
接着创建了两个存储过程my_proc1和my_proc2,它们都具有AUTHID DEFINER权限,也就是使用它们的用户必须拥有它们的owner授予的权限。这两个存储过程中都使用了条件编译语句IF/THEN/ELSE/END,通过判断my_debug包中的debug和trace常量的值来输出相应的信息。IF指令用于测试编译时常量的值,如果值为TRUE,则执行THEN指定的代码块,否则执行$ELSE指定的代码块。这种条件编译语句通常用于开发和调试过程中,在编译时根据一些条件选择性地编译特定的代码块,以提高代码的可读性和效率。

过程my_proc1仅使用debug,而过程my_proc2仅使用trace,但两个过程都依赖于该包。但重新编译的代码可能并不会有所不同。例如,如果您只更改debug的值为FALSE,然后重新编译这两个过程,那么my_proc1的编译代码会改变,但my_proc2的编译代码不会改变。

关于AUTHID DEFINER 和AUTHID CURRENT_USER

AUTHID参数用于定义执行函数体时,使用哪个用户的权限。

AUTHID { CURRENT_USER|DEFINER}
  1. 当创建具有 AUTHID CURRENT_USER 权限的存储过程、函数或包时,其将在调用它的用户的权限上下文中运行。
    例:
CREATE OR REPLACE PROCEDURE TEST_AUTHID1 AUTHID CURRENT_USER IS
BEGINEXECUTE IMMEDIATE 'select * from table1';
END TEST_AUTHID1 ;
/

该代码创建了名为 TEST_AUTHID 的存储过程,该存储过程以当前用户的上下文权限来运行(即 AUTHID CURRENT_USER)。在存储过程的主体中,使用 EXECUTE IMMEDIATE 语句来执行了一个 SQL 查询,查询的是名为 table1 的表的所有数据。

由于存储过程是以当前用户的权限来运行的,因此只有当前用户具有足够的权限才能执行该查询。如果当前用户没有对表 table1 的访问权限,则该查询将失败并抛出异常。

  1. 当创建具有 AUTHID DEFINER 权限的存储过程、函数或包时,它将以其所属用户(创建者)的权限上下文中运行。

例:

CREATE OR REPLACE PROCEDURE TEST_AUTHID2 AUTHID DEFINER IS
BEGINEXECUTE IMMEDIATE 'select * from table1';
END TEST_AUTHID2 ;
/

该代码创建了名为 TEST_AUTHID2 的存储过程,该存储过程以定义者 AUTHID 的权限来运行。在存储过程的主体中,使用 EXECUTE IMMEDIATE 语句来执行了一个 SQL 查询,查询的是名为 table1 的表的所有数据。

由于该存储过程是以定义者的权限来运行的,即创建该存储过程的用户/角色/授权程序的权限上下文中运行。因此,只要该定义者具有访问表 table1 的权限,无论调用该存储过程的用户具有何种权限,该查询都会成功执行。
但是,如果定义者在创建存储过程时已经不存在或者权限被撤销,则该存储过程无法成功执行。

参考:
8.14 Invoker’s Rights and Definer’s Rights (AUTHID Property)
Definer’s Rights and Invoker’s Rights (AUTHID clause)

参考连接

Database PL/SQL Language Reference

总结

静态表达式是PL/SQL编程中一个重要的概念,它可以用于定义和初始化变量、参数和常量等。常量表达式、字面量表达式和枚举类型表达式是常用的静态表达式类型。AUTHID参数可以用于定义执行函数体时,使用哪个用户的权限。

http://www.yayakq.cn/news/344617/

相关文章:

  • 如何做网站购物车建设商业门户网站的重要性
  • 国外做黄漫的网站有哪些西安品牌网站建设
  • 焦作网站网站建设网上购物商城数据库设计
  • 网站怎么快速做排名浙江网站
  • 营销类网站设计 要点上海搭建商
  • 商品网站建设格式微网站页面
  • seo站内优化技巧营销团队建设与管理
  • 山东网站空间静态页面网站怎么做
  • 做外贸网站哪家的好推广方法
  • 网站模板含数据库下载网站建设优化之优化关键字
  • 淘宝网站建设基本流程图从建站到网络优化
  • 产品展示网站源码安徽信息工程信息门户平台
  • 手机网站页面模板一个网站建设需要多少钱
  • 河北搭建营销型网站WordPress如何建小语种网站
  • 彩票网站net网站开发ftp与wordpress
  • 网站权重收录pmp培训
  • 可以申请做cpa广告的网站手机h5网站开发
  • 韩国和乌拉圭谁出线广州:推动优化防控措施落
  • 做企业的网站都要准备什么东西asp制作网站
  • 个人网站如何建立单页面 网站
  • 手机网站建设需求文档专门做图的网站
  • 怎么搭建本地网站螺栓球网架
  • 网站建设的几种形式外链下载
  • 凡科建站弊端西安网站优化招聘网
  • 网站从建设到运营管理的理解防红链接在线生成
  • 与通信工程专业做项目的网站手机 网站开发软件
  • 一个网站有个前端后端怎么做如何做免费企业网站
  • 花都高端网站建设项目外包交易平台
  • 网站搭建教学网建立品牌网站的
  • 企业网站建设的误区主要有建设电影网站的目的