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()