1. 程式人生 > >Hive中建立和呼叫儲存過程及自定義函式

Hive中建立和呼叫儲存過程及自定義函式

前面的文章《在Hive中實現儲存過程–HQL/SQL》中介紹瞭如何使用HPL/SQL在Hive中實現儲存過程,執行類似Oracle PL/SQL的功能。

一般的業務場景是資料開發人員開發好一個儲存過程,然後週期性的呼叫,傳入不同的引數即可。

本文繼續介紹如何在Hive中利用HPL/SQL建立和呼叫儲存過程。

使用下面的語句建立一個儲存過程set_message,它接受一個STRING型別的IN引數,輸出一個STRING型別的OUT引數。

  1. CREATE PROCEDURE set_message(IN name STRING, OUT result STRING)
  2. BEGIN
  3. SET result = 'Hello, ' || name || '!';
  4. END;

Oracle以及其他關係型資料庫會將建立的儲存過程儲存到自身的元資料中,但HQL/SQL中並不是,而是儲存在本地檔案中。

將上面的語句儲存到一個本地檔案中,比如:/home/lxw1234/set_message.sql

在以後需要呼叫該儲存過程的指令碼的第一行,使用INCLUDE <procedure_file_name>引入儲存過程的指令碼檔案/home/lxw1234/set_message.sql

注意:行尾沒有分號。

比如,2.sql檔案中的內容如下:

  1. INCLUDE /home/lxw1234/set_message.sql
  2. DECLARE str STRING;
  3. CALL set_message('lxw1234.com', str);
  4. PRINT str;

使用./hplsql -f 2.sql執行:

  1. [[email protected] hplsql-0.3.11]$ ./hplsql -f 2.sql
  2. Open connection: jdbc:hive2://172.16.212.17:10000 (110 ms)
  3. Starting query
  4. Query executed successfully (48.90 sec)
  5. 1
  6. Hello, lxw1234.com!

如果在2.sql檔案中沒有使用INCLUDE引入儲存過程檔案,則返回結果為null。

HPL/SQL自定義函式的建立和呼叫方法同儲存過程,這裡不再累贅。

相關推薦

Hive建立呼叫儲存過程定義函式

前面的文章《在Hive中實現儲存過程–HQL/SQL》中介紹瞭如何使用HPL/SQL在Hive中實現儲存過程,執行類似Oracle PL/SQL的功能。 一般的業務場景是資料開發人員開發好一個儲存過程,然後週期性的呼叫,傳入不同的引數即可。 本文繼續介紹如何在Hive中利

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

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

建立呼叫儲存過程:查詢Stu資料庫某個同學的選修課程的資訊,包括學號,姓名,課程名稱,成績

CREATE PROCEDURE proc_select--建立儲存過程 @Sno char(10) output,--輸入輸出引數 @Sname varchar(20) out,--輸出引數 @Cno char(4) out,--輸出引數 @grade tinyint

oracle PLSQL建立呼叫儲存過程

我是在PLSQL的command window裡使用的命令建表 drop table students; create table students(ID int,userName varchar(100),userpass varchar(100),userAge int)

Oracle建立呼叫儲存過程,函式,檢視

【1】Oracle建立和呼叫儲存過程1:寫一個簡單的例子刪除三級級聯 1)create or replace procedure ww_procedure_servicecheck (V_ID IN NUMBER)-- 定義輸入變數 IS begin    DELETE

在PL/SQL建立呼叫儲存過程--oracle

在oracle10中寫好了儲存過程,程式碼如下:CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int, sE

Mysql儲存過程定義函式的區別

建立儲存過程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristi

除錯SQL Server的儲存過程使用者定義函式

1、在查詢分析器中除錯 查詢分析器中除錯的步驟如下:SQL 2000查詢分析器--左連的物件瀏覽器(沒有的話按F8)--物件項中--右鍵除錯的儲存過程--除錯--輸入引數(必須輸入所有的引數,包括預設值/輸出引數--點選執行--出現一個浮動工具條--上面有單步執行,斷點設定

MySQL儲存過程/儲存過程定義函式的區別

儲存過程:簡單的說,就是一組SQL語句集,功能強大,可以實現一些比較複雜的邏輯功能,類似於JAVA語言中的方法;ps:儲存過程跟觸發器有點類似,都是一組SQL集,但是儲存過程是主動呼叫的,且功能比觸發器更加強大,觸發器是某件事觸發後自動呼叫;有哪些特性:有輸入輸出引數,可以宣

MySQL觸發器、儲存過程定義函式、檢視 常用SQL

1.建立一個userinfo表新增記錄時的觸發器 將新增日誌加入到userinfolog 2.建立一個向userinfo表新增記錄的儲存過程 3.根據userinfo表的出生日期欄位 我們將建立一個簡單算得年齡的自定義函式 4.建立一個userinfo的檢視 呼叫年齡函式

java使用mybatis呼叫儲存過程,拿到返回值(單引數返回值)

service業務層呼叫dao層 注意:返回值直接從物件裡獲取 不需要拿物件接收再獲取 dao.uspGetUser(userPO);//物件封裝了儲存過程的入參和出參 count = userPO.getCount(); //count 是儲存過程的返回值 dao層介面 pu

codeblocks建立呼叫動態連結庫(dll)

一、建立C語言動態連結庫 1.建立。 File->New->Projects->Dynamic Link library->Go 給專案命名為:Dynamic librar

ADO.NET系列之事務呼叫儲存過程

   ADO.NET系列之Connection物件    ADO.NET系列之Command物件    ADO.NET系列之DataAdapter物件    ADO.NET系列之事務和呼叫儲存過程 &nbs

建立五種儲存過程遊標的使用

--建立儲存過程 --A. 建立使用引數的儲存過程 CREATE PROC au_info  @lastname varchar(40),  @firstname varchar(20)  AS  SELECT au_lname, au_fname, title, pub_

大資料入門教程系列之Hive內建函式定義函式

本篇文章主要介紹Hive內建函式以及自定義UDF函式和UDFT函式,自定義UDF函式通過一個國際轉換中文的例子說明。 操作步驟: ①、準備資料和環境 ②、演示Hive內建函式 ③、自定義UDF函式編寫、演示   詳細步驟: 一、準備資料和

Java併發程式設計四種執行緒池定義執行緒使用教程

引言 通過前面的文章,我們學習了Executor框架中的核心類ThreadPoolExecutor ,對於執行緒池的核心排程機制有了一定的瞭解,並且成功使用ThreadPoolExecutor 建立了執行緒池。 而在Java中,除了ThreadPoolExecutor ,Executor框

Hive 內建函式定義函式

1.內建函式 使用如下命令檢視當前hive版本支援的所有內建函式 show functions; 部分截圖: 可以使用如下命令檢視某個函式的使用方法及作用,比如檢視 upper函式 desc function upper; 如果想要檢

MapReduce的combiner類詳解定義combiner類(轉)

一、Combiner的出現背景 1.1 回顧Map階段五大步驟   在第四篇博文《初識MapReduce》中,我們認識了MapReduce的八大步湊,其中在Map階段總共五個步驟,如下圖所示:   其中,step1.5是一個可選步驟,它就是我們今天需要了解的 M

Feign詳細構建過程定義擴充套件

探究清楚 feign 的原理,自定義 feign 功能 spring-cloud-openfeign-core-2.1.1.RELEASE.jar 中 HystrixFeign 的詳細構建過程: @EnableFeignClients -> FeignClientsRegistrar 掃描 @Feign

SQL SERVER 查找出不含增項計算欄位的定義函式

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'B_GetTableWithOutCompute' AND user_name(uid) = 'dbo')     DROP FUNCTION B_GetTableWithOu