inceptor-plsql 系统预定义函数/过程

一、查看预定义函数过程

1.1 相关命令合集

  • 查看已有函数或者存储过程
--smy为库名,不指定的话,相当于对当前数据库进行操作
	show PLSQL FUNCTIONS smy;
  • 查看一个plsql/函数的具体内容
DESC PLSQL FUNCTION EXTENDED functions_name (EXTENDED )
  • 创建存储/函数
CREATE  (OR REPLACE) PROCEDURE/FUNCTION
  • 删除过程/函数
DROP PLSQL FUNCTION/PROCEDURE

-查看正在运行的PLSQL以及ID(仅在inceptor上可以)

PS PLSQL
  • 杀死正在运行的plsql(仅在inceptor上可以)
KILL PLSQL <SESSION ID>

inceptor自带函数/存储的介绍

  • set_env(string,string)(设置环境变量)
    Inceptor中,set_env是一个过程,形参enVar的参数类型为IN,数据类型为字符串,用来存放环境变量的名称;形参value的参数类型为IN,数据类型为字符串,相应地用来存放环境变量的值。
PROCEDURE set_env(enVar IN STRING, value IN STRING)
  • get_env(string)(获取环境变量)
    Inceptor中,get_env是一个函数,形参enVar的参数类型为IN,数据类型为字符串,该函数用来返回set_env中环境变量的所对应的值。
FUNCTION get_env(enVar IN STRING) RETURN STRING



例1:set_env与get_env的使用

	!set plsqlUseSlash true
	BEGIN
	   DECLARE a STRING;
	   DECLARE b STRING;
	   -- 调用过程set_env,定义一个名为aa的环境变量,值为hello。
	   set_env('aa','hello');
	   -- 调用函数get_env,获取环境变量aa的值,并赋值给a。
	   SET a = get_env('aa');
	   -- 输出变量a的值,可以发现变量a与环境变量aa的值相同。
	   PUT_LINE('the value of a is: '||a);
	   set_env('bb','world');
	   SET b = get_env('bb');
	   PUT_LINE('the value of a is: '||b);
	END;
	/
输出结果为:

output
the value of a is: hello

the value of a is: world


  • sqlcode(void)
    Inceptor中,sqlcode()是一个不带参数的函数,用来返回当异常发生时,当前异常的Error code。
FUNCTION sqlcode() RETURN INT
  • sqlerrm(void)
    Inceptor中,带参数的sqlerrm(),用来返回既定Error code下的Error message。
 FUNCTION sqlerrm(errCode IN INT) RETURN STRING



sqlcode与sqlerrm的使用

!set plsqlUseSlash true
BEGIN
  DECLARE TYPE testrecord AS ROW anchor to row of transactions;
  DECLARE test_record testrecord;
  DECLARE v_code INT;
  DECLARE v_errm STRING;
    SELECT *
    INTO test_record
    FROM transactions
    WHERE price=12.12;
    -- 当异常发生时,获取当前异常的Error code,并赋值给变量v_code。
    dbms_output.put_line('error code is: ' ||sqlcode());
    -- 当异常发生时,获取当前异常的Error message,并赋值给变量v_errm。
    dbms_output.put_line('error message is: ' ||sqlerrm());
END;
/
输出结果为:

output
NOT FOUND: Code: 100 Message: No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty tableANONYMOUS BLOCK (LINE 0, COLUMN 0, TEXT "SELECT *

INTO test_record

FROM transactions

WHERE price=12.12;")

error code is: 0

error message is:
  • put_line
    Inceptor,put_line是一个过程,形参msg的参数类型为IN,数据类型为字符串,该过程用来打印出变量或者常量的值。
PROCEDURE dbms_output.put_line(msg IN STRING)



!set plsqlUseSlash true
-- 使用put_line函数,打印出v3的值。
-- 创建名为put_line_test的函数,形参v1的数据类型为整数型,返回值为双精度类型。
CREATE OR REPLACE FUNCTION put_line_test(v1 int)
   RETURNS DOUBLE
BEGIN
   DECLARE v2 DOUBLE;
   DECLARE v3 STRING;
   -- 使用put_line函数,打印出null值。
   put_line(null);
   DBMS_OUTPUT.PUT_LINE(v1);
   SET v2 = 2;
   SET v3 = "I'm a string.";
   -- 使用put_line函数,打印出变量v2的值。
   put_line(v2);
   DBMS_OUTPUT.PUT_LINE('v2: ' || v2);
   -- 使用put_line函数,打印出字符串v2+v1。
   put_line('v2 + v1');
   DBMS_OUTPUT.PUT_LINE(v2 + v1);
   put_line(v3);
   SET v3 = null;
   DBMS_OUTPUT.PUT_LINE(v3);
   -- 函数返回值为v1和v2的乘积。
   return v2 * v1;
END;
/
BEGIN
  dbms_output.put_line("Executing put_line_test(1)");
  -- 使用put_line函数,打印出put_line_test(1)的全部值。
  put_line(put_line_test(1));
END;
  • raise_application_error(int,string,bool)
    在Inceptor PL/SQL 中,可以使用预定义函数raise_application_error,来抛出带有指定error code、error message的异常,目前第三个参数keepExistError是可选的且没有任 何作用。
FUNCTION raise_application_error(errorCode IN INT, msg IN STRING, keepExistError IN BOOL) RETURN EXCEPTION
  • get_columns(string,nestedtable)
    Inceptor中,get_columns可以作函数使用,返回数据表中的列名。
FUNCTION get_columns(table IN STRING, columns IN ) RETURN

Inceptor中,get_columns也可以作过程使用,返回数据表的列名。

PROCEDURE default.get_columns_test()
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值