oracle 存储过程 调用动态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;
编译成功,但是存储过程调用失败。

2.原因分析
在oracl数据库中,ddl表示数据库定义语言,即我们平常使用的sql语句,声明的sql语句可以直接使用拼接字符串进行拼接;
dml表示数据操纵语言,声明的sql语句不能再用管道符||来动态拼接变量。
3.正确实现方式
execute immediate属于dml,dml使用sql的规则如下:
声明sql语句
字符串拼接变量时,变量要使用占位符来代替,格式为 ":" + "名字",名字随意
调用sql语句
使用"using"来传递变量,代替占位符,格式为 "using var1,var2,..."
V_SQL := 'select decode(length(:v1),10,:v2,:v3) from dual';
EXECUTE IMMEDIATE V_SQL INTO V_START USING V_START,V_START || ' 00:00:00',V_START;
结果展示:

4.测试
入参

出参

5.最简单的方式
--结束时间拼接' 00:00:00'
SELECT DECODE(LENGTH(V_END), 10, V_END || ' 00:00:00', V_END) INTO V_END FROM DUAL;
oracle 存储过程 调用动态sql的更多相关文章
- 【PL/SQL系列】Oracle存储过程使用动态SQL
Oracle存储过程相信大家都比较了解,下面就为您介绍Oracle存储过程使用动态SQL的方法,希望对您能够有所帮助. CREATE OR REPLACE PROCEDURE P_STAT_SCORE ...
- oracle 存储过程使用动态sql
Oracle存储过程使用动态SQL 有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL和DML (注意DDL中可以用拼接字符串的方法用来create ta ...
- Oracle 存储过程,临时表,动态SQL测试
--创建事务级别的结果临时表 create global temporary table tmp_yshy( c1 ), c2 ) )on commit delete rows; --创建事务级别的存 ...
- 在Oracle中执行动态SQL的几种方法
转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.en ...
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
- oracle 存储过程调用 执行
oracle 存储过程调用 博客分类: 数据库相关 oracle存储过程 2011年02月11日 星期五 14:47 SQL中调用存储过程语句: call procedure_name(); 调用 ...
- .NET易忘备留 ORACLE存储过程调用
1.Oracle存储过程调用[返回信息,单体或者列表] public IResult FundBuild(string partnerId,string userId, DateTime beginD ...
- Oracle数据库之动态SQL
Oracle数据库之动态SQL 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:一种为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大 ...
- Oracle 存储过程调用语句
#oracle 存储过程调用语句declare v_custName varchar2(10); --客户姓名 v_num number; --订单分布天数 v_time number; --每日订单 ...
随机推荐
- 【8.22校内测试】【数学】【并查集】【string】
今天的t2t3能打出来80分的暴力都好满足啊QwQ.(%%%$idy$ 今天的签到题,做的时候一眼就看出性质叻qwq.大于11的所有数分解合数都可以用4.6.9表示,乱搞搞就可以了. #include ...
- bzoj 1086 树分块
将树分成一些块,做法见vfleaking博客. /************************************************************** Problem: 108 ...
- mysql性能测试
mysqlslap mysql自带的工具使用非常方面: 使用语法如下: # mysqlslap [options] 常用参数 [options] 详细说明: --auto-generate-sql, ...
- hdu 3340 Rain in ACStar 线段树区间等差数列更新
Rain in ACStar Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/problem/show/1385 ...
- iPhone X 适配手机端 H5 页面通用解决方案
一:本文提供两种解决方案 1.终端解决方案(最优,建议选择) 2.web解决方案 导语: iPhone X的出现,一方面对于整个手机行业的发展极具创新领头羊的作用,另一方面也对现有业务的页面适配带来了 ...
- OC 导入类 #import和@class 区别复习
objective-c中#import和@class的区别 在Objective-C中,可以使用#import和@class来引用别的类型, 但是你知道两者有什么区别吗? @class叫做forwar ...
- GNU诞生三十周年
1983年9月27日,MIT人工智能实验室的Richard Stallman在新闻组宣布了雄 心勃勃的GNU(Gnu's Not Unix)操作系统计划,他计划创造一个Unix兼容的自由软件系统,包含 ...
- Spring MVC - Hello World示例
以下示例演示如何使用Spring MVC框架编写一个简单的基于Web的Hello World应用程序.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发一个 ...
- 经典笛卡尔积SQL
经典笛卡尔积SQL: 下面的SQL会造成笛卡尔积: insert into tydic.temp_0731 select a.user_id,a.province_code,b.attr_code f ...
- Eclipse 结合Tomcat开发Web应用
第一部分 配置Tomcat 先到Apache官方网站下载Tomcat:http://tomcat.apache.org/. 但是在你下载Tomcat时,首选确定你的Eclipse支持的Tomcat版 ...