在存储过程中,执行了create table、update table、insert into table

但是在使用pl/sql的存储过程调试的时候,一有问题就直接卡住(标识:执行中.....)

后来为了找了一下,原因有二:

1、使用execute immediate执行create table,需要对执行的用户进行授权执行,命令如下:

grant create table to  cusername;  

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 卡住的更多相关文章

  1. pl sql 存储过程 执行sql 锁死状态

    背景 这是在一个不知如何表达的项目中,我在这个项目中做的就是不知如何表达的事情.只是想着技术,到是通过这个项目把存储过程基本能用的都用了,oracle开发的技术我感觉基本都全活了.别人没搞定的我搞定了 ...

  2. 使用oracle 的 PL/Sql 定时执行一个存储过程

    CSDN日报20170322--<关于软件研发的一些体会总结> 同步博客至 CSDN ,让更多开发者看到你的文章 看微博技术大咖解析互联网应用架构实战 使用oracle 的 PL/Sql ...

  3. PL/SQL存储过程

    一.概述 过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储于数据库中. 并通过输入.输出和输入输出参数与其调用者交换信息.唯一区别是函数总向调用者返回数据. 二.存储过程详解 ...

  4. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  5. Oracle中PL/SQL的执行部分和各种流程控制

    Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...

  6. PL/SQL — 存储过程

    存储过程子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库.是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出.一个存储过程通常包含定于部分,执行部分,Exc ...

  7. PL/SQL 存储过程

    PL/SQL复习九 存储过程 无参数的存储过程: create or replace procedure out_time is begin dbms_output.put_line(to_char( ...

  8. PL/SQL Developer执行.sql文件的几种方法

    1.复制SQL 第一种方法非常常见,也非常简单,先用文本编辑器打开.sql文件,然后把sql复制到PL/SQL Developer的SQL窗口或者命令窗口中运行就行了,本来我也是这么做的,但是我将SQ ...

  9. PL/Sql快速执行 insert语句的.sql文件

    当全是 insert语句的.sql文件太大时(insert 语句条数太大),直接打开执行sql文件,pl/sql会卡死. 这是可以用pl/sql的命令窗口来执行.sql文件,操作步骤如下: 1.新建命 ...

随机推荐

  1. Codeforces - 915E 离散化区间覆盖

    我一直以来都错认为离散化就是换个映射,其实还需要在离散值两端加上相差为1的值才能真正离散 不然看一下test3就知道 不过这个离散姿势太暴力,以至于我1000ms时限跑出998ms(其实是太懒没有删重 ...

  2. JAVA 使用Dom4j 解析XML

    [转自] http://blog.csdn.net/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1)下载 ...

  3. Q942 增减字符串匹配

    给定只含 "I"(增大)或 "D"(减小)的字符串 S ,令 N = S.length. 返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i ...

  4. PIE SDK热力图

      1.算法功能简介 热力图,也就热图或者热点图,它能以特殊高亮的的形式显示某一区域的等级的优越性.重要性或者某一区域类别的密度和变换趋势:例如百度地图热力图 是用不同颜色的区块叠加在地图上实时描述人 ...

  5. V1-Team Scrum Meeting 博客汇总

    V1-Team Scrum Meeting 博客汇总 计划文档 功能规格说明书 技术规格说明书 项目分解 贡献分配规则 一.Alpha阶段 第一次 Scrum Meeting 第二次 Scrum Me ...

  6. linux无敌权限之chattr

    chattr 修改文件或者目录的文件属性,添加超级权限 -R 递归修改文件机子目录 -V 显示详细修改的内容 + 在原有的基础上追加参数 — 减参数 = 跟新为指定参数 a append 设定改参数后 ...

  7. C++11并发编程:原子操作atomic

    一:概述 项目中经常用遇到多线程操作共享数据问题,常用的处理方式是对共享数据进行加锁,如果多线程操作共享变量也同样采用这种方式. 为什么要对共享变量加锁或使用原子操作?如两个线程操作同一变量过程中,一 ...

  8. OpenLayers 案例一

    序 OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问. 例子 <!doctype html> <htm ...

  9. js获取当前日期,格式为YYYY-MM-DD

    //获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = "-& ...

  10. 项目视图 Project Browser

    项目视图 在这个视图,你可以访问.管理你当前项目资源. 项目视图左侧面板显示项目的文件夹结构的分层列表,当从列表中单击一个文件夹,其内容会显示在面板的右边.你可以点击小三角展开或折叠文件夹,显示他包含 ...