Oracle数据库之动态SQL】的更多相关文章

Oracle数据库之动态SQL 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:一种为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理.通常,静态SQL采用前一种编译方式,…
  oracle 存储过程 调用动态sql CreationTime--2018年8月16日11点25分 Author:Marydon 1.错误实现方式 --开始时间拼接' 00:00:00' V_SQL := 'select decode(length(' || V_END || '),10,' || 'concat(' || V_END || ', 00:00:00),' || V_END || ') from dual'; EXECUTE IMMEDIATE V_SQL; 编译成功,但是存…
Oracle存储过程相信大家都比较了解,下面就为您介绍Oracle存储过程使用动态SQL的方法,希望对您能够有所帮助. CREATE OR REPLACE PROCEDURE P_STAT_SCORE01 ( PARA_EXAMGUID VARCHAR2, -- 考试ID A9093AE714AC47758A367B8813B99D1D,3216885E3B3148E3904908BD30BF9413,F8254D3E50F64819A996D1E369BBF053 CUR OUT SYS_RE…
Oracle数据库之PL/SQL触发器 1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行.触发器经常用于加强数据的完整性约束和业务规则等. Oracle触发器有三种类型,分别是:DML触发器.替代触发器和系统触发器. DML触发器 顾名思义,DML触发器是由DML语句触发的.例…
Oracle数据库之PL/SQL包 1. 简介 包(PACKAGE)是一种数据对象,它是一组相关过程.函数.变量.常量和游标等PL/SQL程序设计元素的组合,作为一个完整的单元存储在数据库中,用名称来标识. 包类似于Java或C#语言中的类,包中的变量相当于类中的成员变量,过程和函数相当于类方法. 通过使用包,可以简化应用程序设计,提高应用性能,实现信息隐藏.子程序重载等面向对象语言所具有的功能. 与高级语言中的类相同,包中的程序元素也分为公用元素和私用元素两种,这两种元素的区别是他们允许访问的…
Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后再次…
Oracle数据库之PL/SQL异常处理 异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的. PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料到的事件.一个健壮的程序都应该能够正确处理各种异常情况,并尽可能从中恢复. 1. 异常处理 异常处理是用来处理正常执行过程中未预料的事件.PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行. PL/SQL编程过程中,有三种类型的异常: 1.预定义异常 对这种异常情况的处…
Oracle数据库之PL/SQL流程控制语句 在任何计算机编程语言(如C,Java,C#等)都有各种流程控制语句,同样,在PL/SQL中也存在这样的流程控制结构. 几种常见的流程控制结构: 一.条件结构 1. 简单IF结构 -- 简单IF结构 IF <布尔表达式> THEN 满足条件时执行的语句 END IF; 2. IF-ELSE结构 -- IF-ELSE结构 IF <布尔表达式> THEN 满足条件时执行的语句 ELSE 不满足条件时执行的语句 END IF; 3. 多重IF…
转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.ename  FROM scott.emp t WHERE t.deptno = 20;但有的时候,从应用的需要或程序的编写出发,都可能需要用到动态SQl,如:当 from 后的表 不确定时,或者where 后的条件不确定时,都需要用到动态SQL. 一.使用动态游标实现1.声明动态游标TYPE i_cu…
先列上我的数据库表格: c_date(Date格式)     date_type(String格式) 2011-01-01                   0 2012-03-07                   0 2013-07-03                   1 ......                            .. 一:oracle数据库查询的sql语句重点是如何查日期类型,里面就涉及到了to_char 和to_date了 上范例:和普通的sql语句思…
Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : select * from user_tables; 3.创建表空间 :CREATE TABLESPACE invocie DATAFILE '/data/InvoiceData/invoicebak/invocie_01.dbf' Size 4096M AUTOEXTEND OFF: CREAT…
Oracle数据库中的SQL基线信息,当数据库出现性能问题时,在业务无法提供相应业务信息时,通过对比SQL基线信息来查找SQL的变化. 查找数据库一天内运行次数大于5000次的sqlid select sql_id,sum(EXECUTIONS_DELTA)from dba_hist_sqlstat a,dba_hist_snapshot b where a.snap_id=b.snap_id and a.INSTANCE_NUMBER=b.INSTANCE_NUMBER and to_char…
Oracle存储过程使用动态SQL 有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL和DML (注意DDL中可以用拼接字符串的方法用来create table或drop table,在DML中,类似于insert则不可以直接用execute immediate中直接拼接的方法,必须用using传递参数) /*** DDL ***/ create or replace procedure CREATE_TABLE(CREATE_SQL VARCHAR…
WHEN子句说明触发约束条件.Condition为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL函数.WHEN子句指定的触发约束条件只能用在BEFORE和AFTER行触发器中,不能用在INSTEAD OF行触发器和其它类型的触发器中. -- 创建记录操作事件的表 CREATE TABLE event_table( event VARCHAR2(50), time DATE ); -- 创建触发器 CREATE OR REPLACE TRIGGER tr_star…
PL/SQL程序设计简介 一.什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写. ORACLE的SQL是支持ANSI(American national Standards Institute)和ISO92 (International Standards Organization)标准的产品.PL/SQL是对SQL语言存储过程语言的扩展.从ORACLE6以后,ORACLE的RDBMS附带了PL/SQL.它…
                                                                                Oracle  sql 性能优化调整 1.选用适合的ORACLE优化器 ORACLE的优化器共有3种: a.  RULE (基于规则)  b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL…
一.PL/SQL 块 (一)PL/SQL 程序由三个块组成,即声明部分.执行部分.异常处理部分 PL/SQL 块的结构如下: 1.DECLARE /* 声明部分: 在此声明 PL/SQL 用到的变量,类型及游标,以及局部的存储过程和函数 */ 2.BEGIN /* 执行部分:过程及 SQL 语句 , 即程序的主要部分* 3.EXCEPTION /* 执行异常部分: 错误处理 */ 4.END; 其中 执行部分是必须的. (二)PL/SQL 块可以分为三类: 1.无名块:动态构造,只能执行一次.…
介绍PL/SQL之前,先介绍一个图像化工具:Oracle SQL Developer 在oracle的开发过程中, 我们难免会使用第三方开发的软件来辅助我们书写SQL, pl/sql是一个不错的sql书写工具. 下载链接:http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html PLSQL是程序设计语言,可以用来操作Oracle数据库! 学习PL/SQL目的:1)操作ORACLE数据库…
1.定义基本变量: 2.引用型的变量: set serveroutput on   declare pename emp.ename%type; psal emp.sal%type;   begin select ename,sal into pename,psal from emp where empno='7521';   dbms_output.put_line(pename||'的薪水是'||psal);   end; / 3.记录型变量: set serveroutput on   d…
1. 游标概念 字面意思是游动的光标,是指向上下文区域的句柄或指针. 在PL/SQL块中执行CRUD操作时,ORACLE会在内存中为其分配上下文区.用数据库语言来描述游标就是:映射在上下文区结果集中一行数据上的位置实体. 用户可以使用游标访问结果集中的任意一行数据,将游标指向某行后,即可对该行数据进行操作.游标为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式SQL语句的应用程序的常用编程方式. 在每个用户会话中,可以同时打开多个游标,其最大数量由数据库初…
PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 要实现PL/SQL程序设计,先介绍如下的基本内容: 二.标识符 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同:…
一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 要实现PL/SQL程序设计,先介绍如下的基本内容: 二.标识符 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同: 标识符名第一个字符必须为…
比如:通过系统web页面自动生成了sql语句,insert into temp(select '1,2,3',to_date(sysdate,'yyyy--mm-dd hh24:mi:ss') from dual),将这条SQL保存到另外一张表的SQL字段(列)中. 说白了,现在就是遇到这些单引号的问题,无法将SQL语句保存到数据库的表中. 答案: INSERT INTO t(col) SELECT 'insert into temp SELECT ''1,2,3'',to_char(sysda…
今天在发布ASP.NET WEB网站时发现程序连接不了数据 报“ORA-12154: TNS: 无法解析指定的连接标识符”的错误,但PL/SQL连接又没有问题.真莫名其秒.在百度找了好多相关的问题.都没有解决我的问题. 最后我的解决方案是: 1.将ORACLE安装目录下的sqlnet.ora 文件里的 names.directory_path= (tnsnames) 改成 names.directory_path= (tnsnames ezconnect). 2.重启服务器问题完美的解决了.…
; SELECT to_date('2014-12-01', 'yyyy-mm-dd') + numtodsinterval(rownum , 'day') FROM DUAL CONNECT BY ROWNUM <= (to_date('2015-01-01', 'yyyy-mm-dd') - to_date('2014-12-01', 'yyyy-mm-dd')) wm_concat(分组时 列值相加) 加派需 select ts.peplename peplename, max(ts.in…
1,在目标数据库新增服务器对象->连接到服务器->新建服务器连接 2,编写数据同步业务PROC ALTER PROC TestProc AS BEGIN --打开完全事物回滚 SET XACT_ABORT ON; SET NOCOUNT ON; --开始异常拦截 BEGIN TRY --开始事物 BEGIN TRANSACTION; PRINT '开始同步数据'; MERGE INTO dbo.TestTable AS T USING ( SELECT ROW_NUMBER() OVER (O…
1.数据 --创建职员表create table tbEmp( eID number primary key, --职员编号 eName varchar2(20) not null, --职员姓名 eSex varchar2(2) not null --职员性别 check(esex in ('男','女')), eAge number not null check(eage>=18), --职员年龄 eAddr varchar2(50) not null, --职员地址 eTel varcha…
最近公司一个项目代码里的定时任务无法执行,查验代码良久,奈何代码过于老旧,开发人员换了一茬又一茬,现在都无法理清,故无奈只好到数据库里重新写存过,配置定时任务. 在写存过时,由于检测及安全性能要求,需要备份数据,设计是每次调用存过时就创建一张新表记录历史数据,开始时是准备直接一条语句搞定: BEGIN execute immediate 'create table tmp_a_'||to_char(sysdate, 'yyyymmdd')||' as select * from a'; END;…
1.打开PL/SQL工具,菜单进入   工具>ODBC导入器(菜单列表倒数第二): 2.连接数据库与选择导入的excel文件表: 3.选择导入的表以及excel与数据库表字段之间的对应关系:…
功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or replace directory MyProcBakPath as 'E:/OracleBackUp/ProcBack';--3.赋权限:sqlplus /nologconn user/pswd as sysdbagrant select on DBA_OBJECTS to user;--4.创建…