Oracle儲存過程實現通過動態引數複製表
(作者:陳玓玏)
上一篇記錄的是通過自定義函式複製表的筆記,但是覺得過程還是有些麻煩。覺得還是用儲存過程更簡潔些,今天就把儲存過程的寫法整理出來了。下面程式碼用的時候記得把相應位置變數替換成你自己的。
--使用儲存過程複製表,使用儲存過程來複製表比使用自定義函式更簡單,因為自定義函式返回多行結果需要用遊標,但帶遊標的查詢語句不能用於create as。 create or replace procedure createtable(tname in varchar2,id in number) is --sql_sent是用來儲存sql語句的臨時變數,儲存過程可以不設定返回值,這也是它和自定義函式的重要區別 sql_sent varchar2(20000); begin sql_sent:='create table '||tname||' as select col from tableName where id='||id; execute immediate sql_sent; commit; end; --執行儲存過程 exec createtable('new_tablename',112);
上面是比較簡單的引數傳入,涉及到時間引數時,處理起來會麻煩一些,時間引數如下:
上面是比較
//複製join之後的表,並將時間作為傳入的引數。這個地方很容易出錯,首先就是單引號的問題,需要再加單引號實現轉義 ,所以最好是用dbms_output.put_line(sql_sent);輸出sql語句看一下是否正確 create or replace procedure createtable(tname in varchar2,date_time in varchar2) is sql_sent varchar2(20000); begin sql_sent:='''yyyy-mm-dd'''; sql_sent:='create table '||tname||' as select * from tableName where trunc(sa_time)>=to_date('||date_time||','||sql_sent||')'; --這樣拼接的字串作SQL語句常常容易出現拼寫的問題,所以最好是輸出語句檢查一下是否存在問題 dbms_output.put_line(sql_sent); execute immediate sql_sent; commit; end; --執行儲存過程 exec createtable('newTableName','''2018-09-01''');
相關推薦
Oracle儲存過程實現通過動態引數複製表
(作者:陳玓玏) 上一篇記錄的是通過自定義函式複製表的筆記,但是覺得過程還是有些麻煩。覺得還是用儲存過程更簡潔些,今天就把儲存過程的寫法整理出來了。下面程式碼用的時候記得把相應位置變數替換成你自己的。 --使用儲存過程複製表,使用儲存過程來複製表比使用自定義函式
通過oracle儲存過程實現使用者登陸驗證
1.建立使用者表: create table t_user( u_id number constraint pk_tuser primary key, u_name varchar2(15), u_pwd varchar2(20), sex varchar2(2) chec
OCI 呼叫Oracle 儲存過程實現
OCI呼叫儲存過程 最近的風控框架開發中,遇到一個場景,即程式需要呼叫Oracle中的儲存過程,但是目前的框架中並不支援,只支援呼叫組裝好的SQL語句,即基本的資料庫增刪改查操作,這樣就需要開發OCI呼叫儲存過程。 基於這個需求,開始網上找尋資料。由於使用到
Oracle 儲存過程實現批量插入
create or replace procedure BATCH_INSERT_TABLEA_UER(insertNo in integer) is -----------insertNo:傳入引
ASP.NET呼叫oracle儲存過程實現快速分頁
{ OracleConnection conn =new OracleConnection(ConfigurationSettings.AppSettings["OracleConnstr"].ToString()); OracleCommand cmd =new OracleCommand(); cmd.
oracle儲存過程中應用動態sql
需求背景:對有些資料庫操作較多的功能演算法需求,或使用應用程式程式碼多次連線操作資料,會造成較大效能損耗,或者系統動態引數化如要查詢的表名是存在資料庫裡的,為節減網路連線開銷,建議使用儲存過程實現資料庫操作需求的演算法。動態sql ,意思是sql語句並不是事先明確的,而是可
Oracle 儲存過程中執行動態SQL,動態表名
create or replace procedure mw_sys.clearrubbishdatefy2 is type table_type is table of mw_app.mwt_ud_yscsjdl.tablename%type; tablenameAr
Oracle儲存過程傳入List
--第一步,建立資料庫物件 CREATE OR REPLACE TYPE param_object is object( configId nvarchar2(64), evaluateScore number(18,2), evaluateLevel nvarc
MySQL儲存過程實現動態執行SQL
create procedure p_procedurecode(in sumdate varchar(10)) begin declare v_sql varchar(500); #需要
Oracle 儲存過程 in、out、in out 引數的使用方法
1. in 引數 用於接收引數,在子程式內部,不能進行修改。預設的引數模式:in 案例: -- 宣告儲存過程 create or replace procedure pro_in(p_num in number) is begin dbms_output.put_line(p_n
通過shell指令碼呼叫oracle儲存過程並加入定時任務
例項 檔名:add_tab_partitions.sh #!/bin/sh username='waep' password='czty_waep' sqlplus -S ${username}/
使用c#呼叫oracle儲存過程獲取儲存過程引數資訊
本文介紹如何獲取儲存過程的引數資訊,並介紹如何在c#程式碼中使用ODP.NET呼叫oracle儲存過程返回結果集:1:建立包:SQL> create or replace package FORP_PROC_INFO is 2 3 -- Author :
用動態sql執行oracle儲存過程
1、呼叫procedure: v_sql := 'Begin pkg_name.procedure_name(:in_v1, :in_v2, :out_v1, :out_v2); End;' ; EXECUTE IMMEDI
oracle儲存過程傳入in引數,返回結果集
create or replace procedure proc_report_TEST(zhxshss in varchar2, pcursor out sys_refcursor) as begi
指令碼實現oracle 儲存過程後臺執行
---問題描述 幾個存過,比對丟失的充值卡,都是幾億的表,在不同的資料庫,儲存過程用DB_LINK實現比對,並且將丟失的資料插入表種,寫了幾個存過,執行了十幾天,用shell指令碼實現存過後臺執行 ---shell指令碼 --money_test1 為儲存過程名字
oracle 儲存過程 引數(in | out | in out)的使用
儲存過程傳參方式 1.in 傳參 create or replace procedure p_name( param_name in param_type) is --聲明瞭一個呼叫時傳進來的引數 和 它的型別 驗證: create or replace p
Oracle儲存過程使用動態遊標
spool F:/dbtest12.log; set timing on; set serveroutput on; declare --定義遊標:獲取所有表 CURSOR c_allTables IS select t.OWNER,t.TABLE_NAME from
使用 Oracle的儲存過程實現資料加密和解密
我們都知道,幾乎所有的資料庫都有儲存過程,但在實際開發中,它有什麼用途了?下面使用Oracle的儲存過程,採用Oracle自帶的dbms_obfuscation_toolkit.desencrypt
oracle儲存過程,動態sql
CREATE OR REPLACE PROCEDURE "TUBEMNG"."RE" (one OUT INTEGER,two OUT INTEGER,three OUT INTEGER,four OUT INTEGER,ptype IN VARCHAR2,D
通用ORACLE 分頁查詢語句,儲存過程實現
PROCEDURE RECORDS_LIST ( sqlrecords in varchar2, sqlrecordscount in varchar2, cur_result_out out serarch_result, totalcount o