1. 程式人生 > >oracle獲取儲存過程指令碼

oracle獲取儲存過程指令碼

函式名:Fun_GetProText

作用: 取得oracle的儲存過程指令碼

引數:  pro_name 儲存過程名稱。
返回值是clob型別。
用法:

select Fun_GetProText('pro_test') from dual;

函式Fun_GetProText如下:

create or replace function Fun_GetProText(pro_name varchar2) return clob is
  v_text clob;
  cursor c_job is
    SELECT text as SQLTEXT
      FROM user_source
     where lower(name) = lower(pro_name)
       and type = 'PROCEDURE';
  c_row c_job%rowtype;
begin
  v_text := 'CREATE OR REPLACE ';
for c_row in c_job loop
       v_text := v_text ||  c_row.SQLTEXT; 
       end loop;
  return v_text;
end Fun_GetProText;
儲存過程名:SP_CreatePro

作用:編譯儲存過程到資料庫:

引數 : pscript clob型別.
        儲存過程指令碼。
用法:
 call SP_CreatePro('CREATE OR REPLACE PROCEDURE Pro_Test IS BEGIN  delete from stusers where 1<>1;   END Pro_Test;');

create or replace procedure SP_CreatePro(pscript in clob)
is
begin

  execute immediate pscript;

end SP_CreatePro;


相關推薦

oracle獲取儲存過程指令碼

函式名:Fun_GetProText 作用: 取得oracle的儲存過程指令碼 引數:  pro_name 儲存過程名稱。 返回值是clob型別。 用法:select Fun_GetProText('pro_test') from dual; 函式Fun_GetProTex

使用c#呼叫oracle儲存過程獲取儲存過程引數資訊

本文介紹如何獲取儲存過程的引數資訊,並介紹如何在c#程式碼中使用ODP.NET呼叫oracle儲存過程返回結果集:1:建立包:SQL> create or replace package FORP_PROC_INFO is  2    3    -- Author  :

Oracle 批量建函式 儲存過程 指令碼

這段時間開始使用oracle 10G 資料庫,前幾天寫了幾個報表的函式  和儲存過程,然後 把生成的指令碼去  正式庫上執行 ,老是報錯,不知道是怎麼回事, 可能是  SQLserver 用慣了 ,總覺得可以連續執行多個  建函式的 指令碼,但是  始終不行, 偶然的在 網

oracle儲存過程優缺點

oracle的儲存過程優缺點   1.儲存過程可以使得程式執行效率更高、安全性更好,因為過程建立之後 已經編譯並且儲存到資料庫,直接寫sql就需要先分析再執行因此過程效率更高,直接寫sql語句會帶來安全性問題,如:sql注入    2.建立過程不會很耗系統資源,因為過程只

獲取儲存過程輸出引數

public string UpdateStockINCheck(StockStockIN model)         {             string bResult = ""

py呼叫oracle儲存過程,注意procedure的out取值方式

#!/usr/bin/env python import sys import csv import cx_Oracle import codecs import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

oracle學習儲存過程

1, create or replace procedure  sp_pro is begin  insert   into  mytest value

Oracle 編譯儲存過程報錯: 表或檢視不存在問題分析與解決

今天遇到一個問題,自己寫了一個很簡單的儲存過程,編譯的時候,報錯: 表或檢視不存在;      但是:表確實是存在,單獨拿出來查詢,一點問題也沒有。      經過幾番查詢,找到了問題所在: 查詢表的許可權不夠; 解決方案:

SqlServer獲取儲存過程的返回值

1.OUPUT引數返回值 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_buyerid int , @o_id bigint OUTPUT ) AS BEGIN SET NOCOUNT ON; BEGIN INSERT I

Oracle儲存過程和MERGE INTO語句

一、MERGE INTO語句   1、merge into語句的功能:我們操作資料庫的時候,有時候會遇到insert或者Update這種需求。我們操縱程式碼時至少需要寫一個插入語句和更新語句並且還得單獨寫方法效驗資料是否存在,這種操作完全可以用merge into語句代替,不僅省時省力而且條理更清晰,一個S

Mybatis Oracle 使用儲存過程進行分頁

一、儲存過程 --儲存過程語句 CREATE OR REPLACE PROCEDURE PAGE_UTIL(--儲存過程分頁工具 location IN VARCHAR2,--查詢語句 page IN int,--第幾頁 perP

ORACLE儲存過程變數名和表字段名相同

1.事件概述 今天再寫儲存過程使用變數沒注意到問題,導致SQL執行緩慢,找了許久才發現哪裡有問題。 2.發現問題 在儲存過程中執行下圖sql需要20秒左右,執行計劃發現走了全表掃描,而在儲存過程中相同的SQL不會有問題。 然後我單獨把SQL拿出來跑,將變數名替換成真實資料,1秒

oracle儲存過程小結

1.建立或替換一個儲存過程(PROCEDURE) CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ] IS [declaration_section] BEGIN exec

oracle儲存過程裡面呼叫其它的儲存過程(包含遊標)

第一種情況是返回的遊標是某個具體的表或檢視的資料,如 CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USER

使用PL/SQL developer ORACLE 建立儲存過程、DBMS_JOB定時任務

由於需要對資料庫的一個表進行定時更新,之前想在後臺寫定時任務,後來發現數據庫的dems_job比較方便,之前並沒有接觸過PL/SQL和Oracle的定時任務Job,為了實現這一需求,於是在網上找了各種資料。 建立定時任務job之前首先需要有我們要操作的資料庫表,然後我們應該

oracle儲存過程中寫兩個遊標巢狀迴圈

CREATE OR REPLACE PROCEDURE "PROC_CHZBANKMOTNREC" AS vid NUMBER(19);--id vzdrpriaccount VARCHAR2(1

oracle使用儲存過程做鋪底資料

create or replace procedure "TEST_PROCEDURE" isnum int;begin//第一層迴圈1w次for i in 10000 ..19999 loop//第二層迴圈10次for j in 1..10 loopnum:=i*10+j-1;//使用||拼接字串inser

Oracle儲存過程和函式中IS和AS的區別

在儲存過程(PROCEDURE)和函式(FUNCTION)中沒有區別; 在檢視(VIEW)中只能用AS不能用IS; 在遊標(CURSOR)中只能用IS不能用AS。 --記住就行了,沒什麼技巧.-_-.

oracle儲存過程

1儲存過程主體 --儲存過程,傳入引數,求要求的商品總價 CREATE OR REPLACE PROCEDURE P_PRO ( P_NAME VARCHAR2, U_NAME VARCHAR2 ) AS A_OVER NUMBER; BEGIN SELECT B.PRODUCT_NU

SQL2008 連結Oracle 呼叫儲存過程

最近接觸了兩個專案都用到了SQL與Oracle資料互通,其中一個數據同步還要呼叫ORACLE中的儲存過程來執行相應的操作。 1. SQL連結ORACLE 都是視覺化的操作 如下圖: 紅色框選的是oracle的資料驅動,如果沒有這個驅動 那