oracle儲存過程,動態sql
CREATE OR REPLACE PROCEDURE "TUBEMNG"."RE" (one OUT INTEGER,two OUT INTEGER,three OUT INTEGER,four OUT INTEGER,ptype IN VARCHAR2,DRAWNO IN VARCHAR2,MSIZE IN VARCHAR2) AS TYPE name_num_rc IS REF CURSOR; cv name_num_rc; dynal_sql VARCHAR2(500); NUM INTEGER; IN_TIME DATE; BEGIN one:= 0; four:= 0; three:=0; two:=0; dynal_sql:='SELECT ST.IN_TIME,TU.NUM FROM TB_DM_ML_STOCK st INNER JOIN TB_DM_TUBE tu ON ST.TU_ID=TU.TU_ID WHERE 1=1'; --dbms_output.put_line(ptype); --機型IF ptype IS NOT NULL THEN dynal_sql:=dynal_sql || ' AND TU.P_TYPE=''' ; dynal_sql:= dynal_sql || ptype || ''''; --dbms_output.put_line(dynal_sql); END IF; --零件圖號 IF DRAWNO IS NOT NULL THEN dynal_sql:=dynal_sql || ' AND TU.DRAW_NO=''' ; dynal_sql:= dynal_sql || DRAWNO || ''''; --dbms_output.put_line(dynal_sql); END IF; --尺寸IF MSIZE IS NOT NULL THEN dynal_sql:=dynal_sql || ' AND TU.M_SIZE=''' ; dynal_sql:= dynal_sql || MSIZE || ''''; --dbms_output.put_line(dynal_sql); END IF; OPEN cv FOR dynal_sql; FETCH cv INTO IN_TIME,NUM; WHILE CV%FOUND LOOP --根據上一次取到的值進行操作 IF IN_TIME IS NOT NULL THEN IF ADD_MONTHS(IN_TIME, 1)> SYSDATE THEN--一個月以內的記錄one:=one+NUM; ELSIF ADD_MONTHS(IN_TIME, 3)> SYSDATE THEN --1-3個月滯留時間 two:=two+NUM; ELSIF ADD_MONTHS(IN_TIME, 6)> SYSDATE THEN --3-6個月滯留時間 three:=three+NUM; ELSE--3-6個月滯留時間 four:=four+NUM;--半年以上滯留記錄 END IF; END IF; --再一次取值 FETCH cv INTO IN_TIME,NUM; END LOOP; --FETCH cv into NAMES; -- routine body goes here, e.g. -- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle'); --INSERT INTO WX_MENU(ID,NAME) VALUES('1122623212','12123'); CLOSE cv; END;
相關推薦
oracle儲存過程,動態sql
CREATE OR REPLACE PROCEDURE "TUBEMNG"."RE" (one OUT INTEGER,two OUT INTEGER,three OUT INTEGER,four OUT INTEGER,ptype IN VARCHAR2,D
mysql 儲存過程動態sql
DROP PROCEDURE IF EXISTS PRO_STA_SYSTEM_ORDER_STATE; DELIMITER // CREATE DEFINER=`root`@`%` PROCEDURE `PRO_STA_SYSTEM_ORDER_STATE`(OUT O_RESULT_
SQL Server建立儲存過程——動態SQL
儲存過程(stored procedure)是一組為了完成特定功能的SQL語句集合,經編譯後儲存在伺服器端的資料庫中,利用儲存過程可以加速SQL語句的執行。 自定義儲存過程,由使用者建立並能完成某一特定功能的儲存過程,儲存過程既可以有引數又有返回值,但是它與函式不同,儲存過程的返回值只是指明執行是否成功,
ORACLE 儲存過程動態遊標例子
一、 CREATE OR REPLACE PROCEDURE PRC_WAP_ACTIVEUSERS(RETCODE OUT VARCHAR2) /***********************************************************
ORACLE 儲存過程動態建立檢視
create or replace procedure "CREAR_PF_VIEW" is pragma AUTONOMOUS_TRANSACTION; cursor cur is --定義遊標 SELECT SPBLX FROM YDS_SHBPDY
用動態sql執行oracle儲存過程
1、呼叫procedure: v_sql := 'Begin pkg_name.procedure_name(:in_v1, :in_v2, :out_v1, :out_v2); End;' ; EXECUTE IMMEDI
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儲存過程中如何執行動態SQL語句
有時需要在oracle儲存過程中執行動態SQL語句 ,例如表名是動態的,或欄位是動態的,或查詢命令是動態的,可用下面的方法: set serveroutput ondeclare n number; sql_stmt varchar2(50); t varc
java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(已解決)
在java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字 //java程式碼 @Test public void testProcedure(){
oracle帶輸入輸出引數儲存過程(包括sql分頁功能)
記錄一下,免得以後忘記了又要到處去找。 begin /*這裡不能直接執行select語句但可以直接執行update、delete、insert語句*/ end裡面不能接執行select語句,宣告會話級臨時表必須有“execute immediate 'TRUNCATE TABLE 表名';”這一句不然其他的s
oracle儲存過程----變數的介紹及使用(PL/SQL)
oracle儲存過程—-變數的介紹及使用 學習一門語言,既然學會了hello word 的輸出,那就要關注下基礎,首先要熟悉儲存過程 中的變數型別。 關於儲存過程變數有哪些 ,這樣的問題,我在百度上搜索,卻發現很多沒用的,最近在同事那裡,忽然
ORACLE 儲存過程的建立以及ORA-06502:PL/SQL:數字或值錯誤的解決方法
建立四個儲存過程,分別是簡單不帶引數的儲存過程、帶兩個輸入引數IN的儲存過程、帶一個輸入引數IN,一個輸出引數OUT的儲存過程和帶兩個輸入輸出引數IN OUT的儲存過程。 建立一張全域性臨時emp表 CREATE GLOBAL TEMPORARY TAB
ORACLE定時任務呼叫儲存過程動態為表新增分割槽
1、建立需要自動分割槽的表 CREATE TABLE TEST(M DATA) PARTITION BY RANGE(M) ( PARTITION TEST_PAR_99991212 VALUES LESS THAN(TO_DATE('12-12-9999','DD-MM-
mysql 儲存過程動態拼接sql並執行賦值
CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50)) BEGIN ## 定義變數 DECLARE _num FLOAT(14,6) DEFAULT 0; ## @表示全域性變數 相當於php
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儲存過程中使用execute immediate執行sql報ora-01031許可權不足的問題
--問題描述: 使用者在儲存過程中呼叫execute immediate 執行 create table語句報錯 ORA-01031, 並且反映直接執行該語句無報錯。--原因根據問題可以發現使用者確實有create table的許可權,查詢dba_role_privs 和 d
sql(join中on與where區別) / NVL函式 / oracle儲存過程中is和as區別 / JAVA呼叫資料庫儲存過程
left join :左連線,返回左表中所有的記錄以及右表中連線欄位相等的記錄。 right join :右連線,返回右表中所有的記錄以及左表中連線欄位相等的記錄。 inner join: 內連線,又叫等值連線,只返回兩個表中連線欄位相等的行。 full join:外連線,返回兩個表中的行:left jo
如何在pl/sql developer 7執行到oracle儲存過程設定斷點的地方
如何高效除錯oracle儲存過程,尤其是父子網狀呼叫的儲存過程 1,在需要設定斷點的oracle儲存過程處設定斷點 如何設定斷點:直接在某行oracle儲存過程處單擊行首,會在行首顯示一個 中間以白叉填充的紅色小圓圈. 如何取消斷點:單擊中間以白叉