1、首先打開oracle數據庫,如下圖所示。
主要從事網頁設計、PC網站建設(電腦版網站建設)、wap網站建設(手機版網站建設)、成都響應式網站建設公司、程序開發、微網站、小程序設計等,憑借多年來在互聯網的打拼,我們在互聯網網站建設行業積累了豐富的做網站、成都網站建設、網絡營銷經驗,集策劃、開發、設計、營銷、管理等多方位專業化運作于一體,具備承接不同規模與類型的建設項目的能力。
2、在Oracle中,對于函數的變量賦值,通常有三種方法來進行處理,直接賦值的方法,可以在聲明變量的時候直接給變量進行賦值。
3、其次,可以使用SELECT語句對變量進行賦值,主要是SELECT INTO語句,如下代碼示例,將變量v_minvar賦予Min(t.sal)的值。
4、最后就是動態SQL語句賦值了,如下代碼。
實現思路:
第一步:先定義一個字符串,這個字符串SQL是由動態變量和其他的sql語句成分拼接組成。
第二步:直接執行 execute immediate SQL;
備注:以上方法是oracle提供的動態執行方法語句,直接使用就可以。
VAR_DYNAMIC_SQL := 'INSERT INTO RP_COMFIRMED_EVENT_DETAIL( EVENT_ID,--ID TRANS_TIME,--交易時間 TRANS_TYPE,--交易類型 TRANS_PROVINCE,--開戶省份 CCE_CSTNO,--客戶號 CCE_CERTTYPE,--證件類型 CCE_CERTNO,--證件號 CCE_AMT,--交易金額 CCE_RISK_SCORE,--不處理的風險分值 CCE_PAYEE_ACC,--付款人賬號 CCE_PAYEE_NAME,--付款人姓名 CCE_REC_NODE,--收款人開戶行 CCE_REC_ACC,--收款人賬號 CCE_REC_NAME,--收款人姓名 RULE_NAME,--規則名稱 CCE_RULE_NOTE,--規則描述 SCORE_RANGE--處理后的風險分值 )select EVENT_ID, SYS_CREATION_DATE, GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T1.EVENT_TYPE,T1.USER_DEFINED_EVENT_TYPE),''eventType'') AS TRANS_TYPE, -- get_province(IP_COUNTRY,IP_CITY) AS CCE_TRANSTYPE, get_vale_from_cd_p('||get_vale_from_cd1('13','5')||'),--開戶省份為自定義字段 USER_ID, '||get_vale_from_cd1('4','4')||',--證件類型為自定義字段 '||get_vale_from_cd1('7','4')||',--證件號為自定義字段 要轉換成動態SQL GET_AMT_BY_CURRENCY(AMOUNT_ORIGINAL,AMOUNT_CURRENCY),--通過匯率和幣種轉換 RISK_SCORE, USER_ACCT_NUMBER, '||get_vale_from_cd_g1(get_vale_from_cd_al)||',--付款人姓名 '||get_vale_from_cd1('11','5')||',--收款人開戶行 自定義字段 需轉換成動態SQL EXT_ACCT_NUMBER, EXT_ACCT_OWNER_NAME, NVL(POLICY_RULE_ID,''FALLBACK_RULE'') AS RULE_NAME, SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述 GET_SCORE_RANGE(RISK_SCORE) AS RISK_SCORE_RANGE FROM EVENT_LOG_REALTIME T1))'; execute immediate VAR_DYNAMIC_SQL;
呵呵 我只能說介紹一下我的幾點經驗。。。
表名是不可以使用變量的。。。
我碰到這種情況的話,一般我先定義一個VARCHAR2的變量,例如v_sql,然后把DDL或者DDM語句寫進去。仿照你的情況。。
v_tablename:='ok'||to_char(trunc(sysdate),'yyyymm');
v_sql:='select * from '||v_tablename||';';
然后通過對v_tablename 的動態賦值,再執行。。
execute immediate v_sql;
類似的,
OPEN cur_out FOR v_sql;
值得說明的是要注意空格。。
望指正、。。。
定義并使用變量
PL/SQL有四種類型:標量類型,復合類型,引用類型 (reference),LOB(Large Obejct)類型
一、標量類型
最常用的就是標量類型,是指只能存放單個數值的變量,包括數字類型、字符類型、日期類型和布爾類型,每種類型又包含相應的子類型。
常量標量類型如下:
VARCHAR2 (n) , CHAR (n), NUMBER (p,s),DATE, TIMESTAMP , LONG , LONG RAW ,BOOLEAN,BINARY_INTEGER(僅 PL / SQL使用),BINARY_FLOAT和BINARY_DOUBLE(10g新引入的)
定義標量:
identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]
使用標量需要注意的是=號被:=取代,與delphi一樣的賦值符號@_@
例子:
v_name VARCHAR2 ( 10 );
v_rate CONSTANTS NUMBER ( 4 , 2 ) : = 3.04 ;
為了防止定義的變量類型與表中的字段類型不一致,可以使用%TYPE來定義:
v_name employee.name % TYPE;
如上面所示,v_name的類型就與表 employee中的name字段類型一樣!!
二、復合變量:
用于存放多個值的變量稱為復合變量,包括PL/SQL記錄,PL/SQL表,嵌套表和VARRAY四種類型
1.PL/SQL記錄
類似于C/C++中的結構概念:
declare
TYPE employee_record is RECORD(
id employee.id % TYPE,
name employee.name % TYPE,
email employee.email % TYPE);
em_record employee_record;
begin
select id,name,email into em_record from employee where name = name;
dbms_output.put_line( ' 雇員名: ' || em_record.name || ' 雇員ID: ' || em_record.id);
end ;
2.PL/SQL表,類似于數組概念,不同的是PL/SQL表允許負值下標,而且沒有上下限,如:
declare
TYPE employee_table is table of employee.name % TYPE index by BINaRY_INTEGER;
em_table employee_table;
begin
select name into em_table( - 1 ) from employee where name = name;
dbms_output.put_line( ' 雇員名: ' || em_table( - 1 ));
end ;
3.嵌套表,與PL/SQL 表相似,不同的是嵌套表可以做表列的數據類型,而PL/SQL表不能,使用嵌套表作為表列時,必須為其指定專門的存儲表,如:
create or replace TYPE emp_type as OBJECT(name VARCHAR2 ( 10 ),salary NUMBER ( 6 , 2 ),hiredate DATE);
CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;
CREATE TABLE department(
deptno NUMBER ( 2 ),dname VARCHAR2 ( 10 ),
employee emp_array)NESTED TABLE employee STORE as employee_dept;
4.VARRAY(變長數組),與嵌套表相似,也可以做為表列的數據類型,但是嵌套表沒有個數限制,而VARRAY有個數限制,如:
CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;
三、引用變量(reference)
類似于C++中的指針或者JAVA中引用的概念,用于存放數值指針的變量,使用此變量,可以使得應用程序共享相同對象,降低占用空間。此類有兩種類型:游標(REF CURSOR)和對象類型(REF OBJECT)
1.REF CURSOR,定義時同時指定SELECT語句的游標稱為顯式或者靜態游標,在打開時才指定SELECT語句的游標稱為動態游標,如:
DECLARE
TYPE c1 IS REF CURSOR ;
emp_cursor c1;
v_name employee.name % TYPE;
v_sal employee.salary % TYPE;
begin
open emp_cursor for
SELECT name,salary FROM EMPLOYEE ;
LOOP
FETCH emp_cursor INTO v_name,v_sal;
EXIT WHEN emp_cursor % NOTFOUND;
dbms_output.put_line(v_name);
END LOOP;
close emp_cursor;
end ;
2.REF OBJECT,與JAVA的引用概念相同,存儲的是指向對象的指針
四、LOB類型
LOB類型是指用于存儲大批量數據的變量,包括內部的3種(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。
CLOB,NCLOB用于存儲大量的字符數據。
BLOB用于存儲大批量二進制數據(如圖象)。
BFILE則存儲指向OS文件的指針。
SQLPLUS命令的處理程序一般是在Oracle安裝目錄下的$ORACLE_HOME\BIN目錄中(如作者本機的目錄為D:\Program File\oracle\product\10.2.0\db_1\BIN),這里面應該有一個名叫sqlplus.exe的可執行文件。如果沒有這個文件,說明安裝的Oracle數據庫軟件是有問題的。
1.如果存在sqlplus.exe文件,可用鼠標選擇【我的電腦】,然后右擊,從彈出的快捷菜單中選擇【屬性】命令,在彈出的界面中選擇【高級】選項卡。
2.單擊【環境變量】按鈕,將彈出對話框。
3.選擇上圖中深藍色的Path這一行,然后單擊【編輯】按鈕,將會新彈出如圖2-14所示的對話框。在Path的【變量值】文本框中的最后面先加入一個":"分號,然后在分號后面加入剛才所說的sqlplus.exe文件的目錄路徑,即"D:\ProgramFile\oracle\ product\10.2.0\db_1\BIN",
4.單擊【確定】按鈕。這樣Oracle的SQLPLUS的環境變量則可以設置好了,在DOS命令窗口中可以識別SQLPLUS相關命令了。
Oracle數據庫實例名:是用于和操作系統進行聯系的標識,即數據庫和操作系統之間的交換是通過數據庫實例名來體現的。
當前名稱:python爬蟲函數存儲,爬蟲數據保存
網站URL:http://www.yijiale78.com/article6/hsioig.html
成都網站建設公司_創新互聯,為您提供網站改版、App設計、企業建站、網站營銷、定制開發、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯