1. 程式人生 > >oracle plsql 自定義函式

oracle plsql 自定義函式

例如:

CREATE OR REPLACE FUNCTION HELLO(str IN VARCHAR2)
RETURN VARCHAR2
IS
  RET VARCHAR2(20);
BEGIN
  RET := 'Hello ' || str;
  DBMS_OUTPUT.put_line(RET);
  RETURN RET;
END;

執行:
SELECT HELLO('yang') FROM DUAL;

刪除:
DROP FUNCTION HELLO;

不能像java裡那樣進行過載。

SQL中呼叫函式的限制

為了從SQL 表示式中呼叫函式,使用者定義函式必須:

只接受IN引數 只接受有效的SQL 資料型別,而不接受PL/SQL特殊的型別

 作為引數

返回資料型別為有效的SQL資料型別,而非PL/SQL 特殊的

 型別

在一個表上的UPDATEDELETE語句中呼叫的函式不能查詢及更新同一個表 SQL 語句中呼叫的函式不能包含結束事務的語句

過程與函式:


相關推薦

oracle plsql 定義函式

例如: CREATE OR REPLACE FUNCTION HELLO(str IN VARCHAR2) RETURN VARCHAR2 IS RET VARCHAR2(20); BEGIN RET := 'Hello ' || str; DBMS_OUTP

Oracle資料庫定義函式練習

--測試函式3 CREATE OR REPLACE FUNCTION FN_TEST3 (NUM IN VARCHAR2) RETURN VARCHAR2 IS TYPE VARCHAR2_ARR IS TABLE OF VARCHAR2(300); NUMARR VARCHAR2_ARR; TEMPN

Oracle建立定義函式時出現錯誤:PLS-00103及PLS-00382

(作者:陳玓玏) 一、PLS-00103 一般出現這個錯誤,基本上可以確定是你的語法錯誤,或者是有中文的輸入。 比如說: 1、Oracle用elsif而你用的是else if; 2、直接從網頁中把程式碼貼上過來結果程式碼中有中文空格。 這種情況下,解決問題的方法

oracle資料庫定義函式get_uuid()

1.oracle資料庫自定義函式get_uuid() 1 CREATE OR REPLACE FUNCTION GET_UUID 2 RETURN VARCHAR IS guid VARCHAR (50); 3 BEGIN 4 guid := lower(RAWTOHEX(sys_g

oracle 使用定義函式查詢條件效率非常低

說到這裡我要提一個oracle函式的屬性,就是deterministic。它表示一個函式在輸入不變的情況下輸出是否確定,像oracle的內建函式UPPER,TRUNC等都是deterministic函式,而像DBMS_RANDOM.VALUE就不是deterministic函式,因為同樣的輸入不一定會導致同樣

除錯經驗——如何檢視Oracle定義函式 (How to view definition of user defined functions in Oracle

問題描述: 現有的Query中似乎使用了一個自定義函式String_to_list,為了排查問題,需要檢視這個函式的定義。 方法:   --新建的function,並未儲存在All_ojbects表中,而是儲存在user_objects表中 SELECT * FRO

除錯經驗——使用定義函式Oracle中實現類似LISTAGG函式的行轉列(字串連線)功能

問題描述: LISTAGG函式是一個很實用的函式,但僅在Oracle 11.2以後的版本中才有。 生產環境中有個資料庫是Oracle 11.1,需要行轉列,但並不能使用LISTAGG函式。 解決方法: 參考以下文章: https://oracle-base.com/artic

oracle資料庫定義split函式

--dba授予建立型別的許可權 grant CREATE ANY TYPE to userName; --普通使用者建立 CREATE OR REPLACE TYPE type_str IS TABLE OF VARCHAR2 (100) ; -- 再建立split函式,程式碼如下: C

Python連線Oracle/Oracle定義函式函式的呼叫

# Python 連線 Oracle Python自帶的模組中有很多操縱檔案的。我們可以把檔案的資料讀出來,經過處理還可以將資料寫入檔案中。但是對於資料的管理和分析來說,資料庫還是專業一些。如果Python能和資料庫結合在一起,那麼就能結合兩種的優勢,提高效率。

oracle 定義函式(非常簡單明瞭)

語法說明 create [or replace] function functionName (parameterName1 mode1 dataType1, parameterName2 mod

[oracle定義函式]將資料去重後以逗號分隔

oracle以逗號分隔,可以使用wm_concat,但該函式本身不能將分組後重複數據去重後,再以逗號分隔。 最近寫sql中分組統計有這個需求,有位同事百度搜索了“oracle 逗號分隔 去重處理”,找到了解決方法。感謝大神,感謝同事! sql結果集某列值顯示如下: '00

[oracle定義函式]查詢表格的行數

假如要查的表為emp(員工表),在scott使用者下預設有這張表。當前有14條記錄。 只需要執行 select count(*) from emp; 需求:現在要把表名變成動態傳入的,想查哪張表的行數只要傳入表名就行了 一、準備工作 在寫這個之前,我們先來寫一個根據員

Oracle 定義函式function

Oracle自定義函式的語法如下:create or replace function 函式名(引數1 模式 引數型別) return 返回值型別 as 變數1 變數型別; 變數2 變數型別; begin 函式體; end 函式名;引數的模

Oracle定義函式實現動態引數複製表(使用了定義type以及pipelined)

(作者:陳玓玏) 之前試了一下,想用自定義函式及遊標實現動態傳入引數,確實可以,但是輸出結果總是不能成表格。 查了一圈,Oracle自定義函式好像是不能直接在SQL語句中寫create as select和insert into這些功能的,但是後來的版本中提供了

oracle儲存過程及定義函式(儲存函式)初學

1.儲存過程和儲存函式的主要區別       儲存函式可以通過return返回函式值;儲存函式可以在SQL語句內部呼叫;儲存函式較儲存過程有諸多限制;儲存過程用select語句返回記錄集,儲存函式使用表變數返回記錄集。 2.儲存過程和儲存函式的建立        儲存過程的

oracle定義的儲存函式遇到的 package or function is in an invalid state

這是語法 我一開始這麼寫的 create function fun_test101(vid number) return number(10) is  usenum number(10); beg

oracle高階用法之定義函式

注意:終端使用dbms_output輸出執行結果,首先PL/SQL開啟伺服器輸出 set serveroutput on; /* 使用者自定義函式 */ -- 檢視函式、觸發器select * from user_source;-- 刪除函式drop function

Oracle定義函式(function)

  函式用於返回特定資料。執行時得找一個變數接收函式的返回值;    語法如下: create or replace function function_name   (   argu1 [mode1] datatype1,   argu2 [mode2] datatype2, ........   )  

Oracle儲存過程和定義函式

概述 PL/SQL中的過程和函式(通常稱為子程式)是PL/SQL塊的一種特殊的型別,這種型別的子程式可以以編譯的形式存放在資料庫中,併為後續的程式塊呼叫。 相同點: 完成特定功能的程式 不同點:是否用return語句返回值。 舉個例子: cre

oracle定義函式查詢資料字典項

 /****************************** 假設儲存資料字典表名:data_dict_entry  表結構如下: create table data_dict_entry  (   DICTTYPEID VARCHAR2(128) not null,