1. 程式人生 > >ORACLE 動態SQL 轉義字元 單引號

ORACLE 動態SQL 轉義字元 單引號

指令碼內容:業務部門需要定期從某庫取出質保資料:

 cat zhibaodata.sh 
#!/bin/sh

export DISPLAY=:0

if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi

sh /home/oracle/.bash_profile

Sql_Directory=/u01/temp/scripts/zhibaotable


sqlplus  -s system/uiu  @${Sql_Directory}/zhibaocreatetable.sh

cat zhibaocreatetable.sh 
set serveroutput on
declare 
 v_date varchar2(8);
 v_table1   varchar2(32);
 v_table2   varchar2(32);
 v_table3   varchar2(40);
 v_table4   varchar2(32);
 v_table5   varchar2(32);
 v_table6   varchar2(32);
 v_table7   varchar2(32);
 v_table8   varchar2(32);
 v_table9   varchar2(32);
 v_table10  varchar2(32);
 v_table11  varchar2(32);
 v_table12  varchar2(32);
 v_sqlt varchar2(2000);
 v_sql1 varchar2(2000);
 v_sql2 varchar2(2000);
 v_sql3 varchar2(2000);
 v_sql4 varchar2(2000);
 v_sql5 varchar2(2000);
 v_sql6 varchar2(2000);
 v_sql7 varchar2(2000);
 v_sql8 varchar2(2000);
 v_sql9 varchar2(2000);
 v_sql10 varchar2(2000);
 v_sql11 varchar2(2000);
 v_sql12 varchar2(2000);
 v_sqlw varchar2(2000);
 v_username varchar2(20);
 v_userpasswd  varchar2(20);
begin
 select to_char(sysdate-10,'yyyymmdd') into v_date from dual; 
 v_username := 'lsp'||v_date;
 v_userpasswd := 'sp'||v_date||'*';
 v_table1   := 'user.SCCOUNT'||v_date;
 v_table2   := 'user.SOUNT' ||v_date;
 v_table3   := 'user.RESTLIT'||v_date;
 v_table4   := 'useJNEE'||v_date;
 v_table5   := 'user._FEE'||v_date;
 v_table6   := 'user.N_SPLIT'||v_date;
 v_table7   := 'useITAL_PC'||v_date;
 v_table8   := 'user._CAPITAL_SD_PC'||v_date;
 v_table9   := 'user.STEREST'||v_date;
 v_table10  := 'user.SJM_NTEREST'||v_date;
 v_table11  := 'user.SJM_FEE'||v_date;
 v_table12  := 'user.STAL_DFCH'||v_date;
 v_sqlt  := 'create database link neworclau connect to '|| v_username  ||' identified by '|| v_userpasswd || ' using  '''||'audit'||'''  ';      


 v_sql1  := 'create table   '||v_table1||' as select * from [email protected] ' ;
 v_sql2  := 'create table   '||v_table2||' as select * from [email protected] ' ;
 v_sql3  := 'create table   '||v_table3||' as select * from [email protected] ' ;
 v_sql4  := 'create table   '||v_table4||' as select * from
[email protected]
' ;
 v_sql5  := 'create table   '||v_table5||' as select * from [email protected] ' ;
 v_sql6  := 'create table   '||v_table6||' as select * from [email protected] ' ;
 v_sql7  := 'create table   '||v_table7||' as select * from [email protected] ' ;
 v_sql8  := 'create table   '||v_table8||' as select * from
[email protected]
' ;
 v_sql9  := 'create table   '||v_table9||' as select * from [email protected] ' ;
 v_sql10 := 'create table   '||v_table10||' as select * from [email protected] ' ;
 v_sql11 := 'create table   '||v_table11||' as select * from [email protected] ' ;
 v_sql12 := 'create table   '||v_table12||' as select * from [email protected] ' ;
 v_sqlw  := 'drop  database link  neworclau ' ;
 dbms_output.put_line(v_sqlt);
 execute immediate v_sqlt;
 dbms_output.put_line(v_sql1);
 execute immediate v_sql1;
 dbms_output.put_line(v_sql2);
 execute immediate v_sql2;
 dbms_output.put_line(v_sql3);
 execute immediate v_sql3;
 dbms_output.put_line(v_sql4);
 execute immediate v_sql4;
 dbms_output.put_line(v_sql5);
 execute immediate v_sql5;
 dbms_output.put_line(v_sql6);
 execute immediate v_sql6;
 dbms_output.put_line(v_sql7);
 execute immediate v_sql7;
 dbms_output.put_line(v_sql8);
 execute immediate v_sql8;
 dbms_output.put_line(v_sql9);
 execute immediate v_sql9;
 dbms_output.put_line(v_sql10);
 execute immediate v_sql10;
 dbms_output.put_line(v_sql11);
 execute immediate v_sql11;
 dbms_output.put_line(v_sql12);
 execute immediate v_sql12;
 dbms_output.put_line(v_sqlw);
 execute immediate v_sqlw;
end;
/


exit;

相關推薦

ORACLE 動態SQL 轉義字元 引號

指令碼內容:業務部門需要定期從某庫取出質保資料:  cat zhibaodata.sh  #!/bin/sh export DISPLAY=:0 if [ -f ~/.bash_profile ]; then   . ~/.bash_profile fi sh /home/

sql轉義字元引號

在SQL中,我們都知道單引號 ' 表示字串的開始和結束符號,如: select * from students where name = '小明'; 但如果字串裡面有單引號時,應該怎麼查詢呢? 這是我最近遇到的一個問題,需求是對一張表的資料進行更新,但各個環境的資料並不一致,只能通過拼接的方式

ORACLE 動態SQL中的多個引號

今天在專案中遇到動態拼sql的語句, 語句如下: v_sql := 'update Table_Test t '         ||' set t.field1 = ''' || 變數1 || ''','  -- v_BalRuleID || v_Balance

Oracle 在字串中輸入引號或特殊字元

-- Start 字串是用單引號括起來的,如果想在字串中輸入單引號該怎麼辦呢?有兩種方法。 方法一:是用兩個單引號代表一個單引號 [sql] view plain copy print? SELECT'I''m Shangbo'FROM DUAL;   方法二:使用 Oracle 特殊語法

儲存過程中動態拼接sql,拼接引號問題

create or replace procedure mergerOrder(       v_ids in varchar2,       v_productCode in varchar2,       v_productCateCode in varchar2)

linux就該這麽學-第4章 寫入、轉義引號、別名、全局變量

http ima src com 分享 全局變量 .com 文件 nbsp 一、寫入 1、> 清空寫入文件 2.>>追加寫入文件 3.2>>錯誤追加寫入文件 二、轉義 linux就該這麽學-第4章 寫入、轉義、單引號、別名、全局變量

SQL server中引號的使用--引號裡面巢狀一層引號

           在使用SQL server時,遇到一個小問題:單引號裡面還要再加單引號,但是直接加會報錯。查了一些網上的解決方法。     select * from sysobjects where

SQL 轉義字元字元轉譯

SQL裡面用單引號轉譯,比如我要把單引號轉譯就是連著打兩個單引號 比如在下面這個表裡面實現: -- 自動拼接uri入庫initQuestionList(question_id,'answer')形式的 UPDATE zt_question_answer SET uri = conc

一個Oracle動態SQL拼接

create or replace function getpjxfjd1(columnxh in varchar2,columnxnxq in varchar2,columntab in varchar2) return number is   existsCol number(6,2)

SQL語句中引號、雙引號和反引號的區分

單引號 ’ 和雙引號 “ 在標準 SQL 中,字串使用的是單引號。 如果字串本身也包括單引號,則使用兩個單引號(注意,不是雙引號,字串中的雙引號不需要另外轉義)。 MySQL對 SQL 的擴充套件,允許使用單引號和雙引號兩種。 反引號 ` 反引號一般在Esc鍵的下方,和~在一起。它是為了區分MySQ

機房收費系統之收取金額查詢(TPicker控制元件時間段取值、SQL語句中引號與雙引號區別)

        收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^ 一、收取金額查詢窗體的流程圖: 二、問題集 這是什麼錯誤呢,為什麼會出現這個型別的錯誤? 產生此問題的程式碼部分是什麼樣子的呢? 以

Oracle動態sql,觸發器,函式,exists

1.動態SQL 後期聯編(late binding),即SQL語句只有在執行階段才能建立,例如當查詢條件為使用者輸入時,那麼Oracle的SQL引擎就無法在編譯期對該程式語句進行確定,只能在使用者輸入

Oracle動態SQL語句

在使用ODP.NET進行Oracle程式設計時,有時候SQL語句非常複雜,需要採用動態構造查詢語句的情況,有兩種方法可以構造動態的SQL語句,並執行返回結果集。 1、在資料訪問層構造SQL語句 例如下面的語句,將構造完整的SQL語句賦值給CommandText,再傳遞到資料庫進行執行,返回結果集。 loa

oracle 動態SQL在儲存過程中的使用

1、      靜態SQL和動態SQLOracle編譯PL/SQL程式塊分為兩個種(其它SQL程式碼塊包括儲存過程也是如此):其一為前期聯編(early binding),即SQL語句在程式編譯期間就已經確定,大多數的編譯情況屬於這種型別;另外一種是後期聯編(late bin

Oracle 動態SQL實現SQL查詢子集行轉列

引言 我們都知道Oracle的Pivot的In()裡是不能跟SQL查詢語句的,必須是已知的字串結果,然而我專案中遇到的需求這個In 並不是靜態的,而是根據我傳遞的條件來篩選,一開始想的是解析XML,可惜轉為XML之後,有相同的重複的節點,解析太麻煩,於是想通過

oracle動態sql以及繫結變數

        實現動態SQL有兩種方式:DBMS_SQL和本地動態SQL(EXECUTE IMMEIDATE) 。 oracle從8代開始就提供了新的執行動態sql的功能:execute immeidate v_sql using *** into ***; 本地動態

SQL中的引號

呵呵,今晚用ASP寫了個將本地資料夾中的文字檔案自動入庫的程式,發現SQL語句中單引號真是奇怪。 待入庫的內容中含有單引號時,則構建的SQL語句出錯,無法實現入庫操作。 而我又不想將 ' 替換成 ' --這樣相當於篡改了入庫內容,不是我所想要的。 最後發現將 ' 替換成 '' 的話,則可成功入

shell轉義引號與雙引號,反撇號

http://www.cnblogs.com/mydomain/archive/2011/10/15/2213017.html 1、轉義     單引號和雙引號都能關閉shell對特殊字元的處理。不同的是,雙引號沒有單引號嚴格,單引號關閉所有有特殊作用的字元,而雙引號

oracle 動態sql引數帶date型別無法執行的問題

      之前在寫儲存過程時,我有一個目的是通過開始時間和結束時間來建立一個檢視,於是我這麼寫了一個過程: procedure prc_CreateViewOBookTcert(p_startdate in date, --統計的開始日期

ORACLE(PL/SQL) 根據字元分割(SPLIT)字串返回陣列

ORACLE沒有提供現成的函式來進行字串的分割,網上有很多中現實方法,本文介紹一種我自己的實現方式。主要是使用Oracle內部函式instr和substr函式的方式來實現。 CREATE OR REP