pl/sql 存储过程执行execute immediate 卡住
在存储过程中,执行了create table、update table、insert into table
但是在使用pl/sql的存储过程调试的时候,一有问题就直接卡住(标识:执行中.....)
后来为了找了一下,原因有二:
1、使用execute immediate执行create table,需要对执行的用户进行授权执行,命令如下:
2、使用execute immediate执行insert/update时,建议表命名规范一下,不要使用oracle的关键词(直接去度)去命名;
2.1、最好先在“SQL窗口”执行一下,看看是否OK;如果可以,那就可能是命名问题了。(仅供参考)
CREATE OR REPLACE PROCEDURE PROC_A
-- auther:learcher as
dobackday date; --当前时间
dobackdaystr varchar2(20 CHAR); --当前时间字符串(yyyy-MM-dd hh24:mi:ss)
first_day_by_month_str varchar2(20 CHAR); --月的第一天,执行创建表时间(yyyy-MM-dd)
back_table_name varchar2(32 CHAR); --备份的表名称 vs_sql varchar2(2048); -- 执行数据备份的sql begin
dobackday := sysdate - 1; --备份昨天
dobackdaystr := to_char(dobackday, 'yyyy-MM-dd'); --当前时间字符串(yyyy-MM-dd hh24:mi:ss)
first_day_by_month_str := to_char(trunc(dobackday, 'month'), 'yyyy-MM-dd'); --备份时间所在月的第一天
back_table_name := 'table_a' || to_char(trunc(dobackday, 'month'), 'yyyyMM'); vs_sql := ''; begin
-- 当备份执行时间为月的第一天,则进行月表创建
-- 手动备份表语句
-- create table table_a201712 as select s.* from table_a s where 1=2
--if first_day_by_month_str=dobackdaystr then
if 1 = 1 then
-- 授权grant create table to cusername;
vs_sql := ' create table ' || back_table_name ||
' as select s.* from table_a s where 1=2 ';
execute immediate vs_sql;
end if; -- 使用占位符,如果多个可以直接加
-- execute immediate 'update table_a set CODE=:1,USER_NAME=:2' using 'code_id_001','user_name_str';
execute immediate 'update table_a set CODE=:1' using 'code_id_001';
commit; vs_sql := ' insert into ' || back_table_name || ' (
CODE, USER_NAME
)
select
CODE, USER_NAME
from table_a where 1=1 '; execute immediate vs_sql;
commit;
end; end PROC_A;
pl/sql 存储过程执行execute immediate 卡住的更多相关文章
- pl sql 存储过程 执行sql 锁死状态
背景 这是在一个不知如何表达的项目中,我在这个项目中做的就是不知如何表达的事情.只是想着技术,到是通过这个项目把存储过程基本能用的都用了,oracle开发的技术我感觉基本都全活了.别人没搞定的我搞定了 ...
- 使用oracle 的 PL/Sql 定时执行一个存储过程
CSDN日报20170322--<关于软件研发的一些体会总结> 同步博客至 CSDN ,让更多开发者看到你的文章 看微博技术大咖解析互联网应用架构实战 使用oracle 的 PL/Sql ...
- PL/SQL存储过程
一.概述 过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储于数据库中. 并通过输入.输出和输入输出参数与其调用者交换信息.唯一区别是函数总向调用者返回数据. 二.存储过程详解 ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- Oracle中PL/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
- PL/SQL — 存储过程
存储过程子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库.是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出.一个存储过程通常包含定于部分,执行部分,Exc ...
- PL/SQL 存储过程
PL/SQL复习九 存储过程 无参数的存储过程: create or replace procedure out_time is begin dbms_output.put_line(to_char( ...
- PL/SQL Developer执行.sql文件的几种方法
1.复制SQL 第一种方法非常常见,也非常简单,先用文本编辑器打开.sql文件,然后把sql复制到PL/SQL Developer的SQL窗口或者命令窗口中运行就行了,本来我也是这么做的,但是我将SQ ...
- PL/Sql快速执行 insert语句的.sql文件
当全是 insert语句的.sql文件太大时(insert 语句条数太大),直接打开执行sql文件,pl/sql会卡死. 这是可以用pl/sql的命令窗口来执行.sql文件,操作步骤如下: 1.新建命 ...
随机推荐
- 1085 PAT单位排行 (25 分
每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤),即考生人数.随后 N 行,每行按下列格式给出一个考生的信息: 准 ...
- dedecms 中变量函数
{dede:global.cfg_cmsurl/} 是网站根目录{dede:global.cfg_cmsurl/} 是当前目录{dede:global.cfg_templets_skin/} 当前模板 ...
- 从source安装python3.5和pip
按顺序来,先装上python3.5,source安装,命令是 ./configure --prefix="你想要的路径" make make install 然后是安装pip,但是 ...
- UNIX文件mode_t详解 ... S_IRUSR
打开文件.新建文件和关闭文件操作 打开文件操作使用系统调用函数open(),该函数的作用是建立一个文件描述符,其他的函数可以通过文件描述符对指定文件进行读取与写入的操作.打开文件的一般形式是: ope ...
- PowerDesigner 16.5 安装和卸载教程【含有安装文件】
1 下载 下载地址:https://pan.baidu.com/s/1kqly0d8qU-QluEagXwh53g 密码:n1a3 下载之后目录结构如下: 2 安装教程 1 安装 1.双击安装文件,如 ...
- 017-Servlet抽取时的BaseServlet模板代码
package www.test.web.servlet; import java.io.IOException; import java.lang.reflect.Method; import ja ...
- IDEA 导入cordova3.5工程目录注意事项
IDEA 导入cordova3.5工程目录注意事项 1 eclipse很不稳定,有很多小问题.平时我自己用idea,但是当用cordova3.5创建好工程目录是,用eclipse导入时没有问题的.但是 ...
- ksframework的xlua版本
https://github.com/zhaoqingqing/KSFramework_xlua
- PHP流程控制之goto语句
goto 操作符可以用来跳转到程序中的另一位置.该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记.PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和 ...
- React.js 小书 Lesson18 - 挂载阶段的组件生命周期(一)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson18 转载请注明出处,保留原文链接和作者信息. 我们在讲解 JSX 的章节中提到,下面的代码: ...