在存储过程中,执行了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. HDU - 5067 / HDU - 5418 TSP

    集合表示多用[0,n)表示方法 HDU - 5067 经典TSP,每个顶点恰经过一次最优 #include<bits/stdc++.h> #define rep(i,j,k) for(in ...

  2. 一个矩阵 JavaScript

    //矩阵运算的函数 ;(function(global){ global.Matrix = { //生成对角矩阵,非零元素都为1 eye : function( n ){ var result = [ ...

  3. git 填坑之 git 暂存区忽略文件

    今天修改公司项目文件的时候,发现被修改的文件的始终不显示已经被修改. 本来是想要把 KWh 改成 kWh,然后执行 git status 后,没有文件修改记录: 开始分析究竟是因为什么导致的这样诡异的 ...

  4. SqlSugar ORM框架文档

    http://www.codeisbug.com/Doc/8/1141 SqlSugar入门级教程+实例 (.net core下的)https://www.cnblogs.com/rulasann/p ...

  5. python3 模块安装列表

    pip install scrapy pip install twisted pip install BeautifulSoup4 pip install lxml pip install Pillo ...

  6. filter 静态资源

    package com.itheima.web.filter; import java.io.IOException; import javax.servlet.Filter; import java ...

  7. TOJ 2939 解救小Q

    描述 小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她.迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡:(,迷宫里还有一些古老的传送阵,一旦走到传送阵上,会强制被传送到传送阵的另一头. ...

  8. CF 305A——Strange Addition——————【暴力加技巧】

    A. Strange Addition time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. 经典算法详解(1)斐波那契数列的n项

    斐波那契数列是一个常识性的知识,它指的是这样的一个数列,它的第一项是1,第二项是1,后面每一项都是它前面两项的和,如:1,1,2,3,5,8,13,21,34,55,89,144,233…… 说明:由 ...

  10. 【Ubuntu】Vritual Box 复制方式克隆

    重装系统后之前安装的虚拟机的镜像全都不见了 ,因为重装系统盘C盘会全部重新被格式化. VtritualBox如果没有指定虚拟机存放位置,默认是会放在C盘的,C:\Users\Administrator ...