怎么理解edb中的package
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,本篇内容介绍了"怎么理解edb中的package"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建p
千家信息网最后更新 2024年11月11日怎么理解edb中的package
本篇内容介绍了"怎么理解edb中的package"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创建package
兼容Oracle语法
create or replace package pk_demoas var_pk_demo_1 number; function func_demo() return number; procedure proc_demo();end pk_demo;create or replace package body pk_demo as function func_demo() return number AS BEGIN var_pk_demo_1 := 100; return var_pk_demo_1; END; procedure proc_demo() AS ret number; BEGIN select func_demo() into ret; var_pk_demo_1 := 200; dbms_output.put_line('var_pk_demo_1 := '||var_pk_demo_1||',ret = '||ret); END;END pk_demo;
元数据
1.存储组织结构
pg_namespace
postgres=# \d pg_namespace Table "pg_catalog.pg_namespace" Column | Type | Collation | Nullable | Default ------------------+-----------+-----------+----------+--------- nspname | name | | not null | nspowner | oid | | not null | nspparent | oid | | not null | nspobjecttype | oid | | not null | nspforeignserver | oid | | not null | nspsecdef | boolean | | not null | nspremoteschema | text | | | nspheadsrc | text | | | nspbodysrc | text | | | nspacl | aclitem[] | | | Indexes: "pg_namespace_nspname_index" UNIQUE, btree (nspname, nspparent) "pg_namespace_oid_index" UNIQUE, btree (oid)postgres=# select * from pg_namespace where nspname='pk_demo'; nspname | nspowner | nspparent | nspobjecttype | nspforeignserver | nspsecdef | nspremoteschema | nspheadsrc | nspbodysrc | nspacl ---------+----------+-----------+---------------+------------------+-----------+-----------------+---------------------+---------------------+-------- pk_demo | 10 | 2200 | 0 | 0 | t | | +| +| | | | | | | | @VARIABLE 16462@;+| @FUNCTION 16463@;+| | | | | | | | @FUNCTION 16463@;+| +| | | | | | | | @FUNCTION 16464@;+| @FUNCTION 16464@;+| | | | | | | | | | (1 row)postgres=# select * from pg_user where usesysid=10; usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useaccountstatus | uselockdate | usepasswordexpire | useconfig --------------+----------+-------------+----------+---------+--------------+----------+----------+------------------+-------------+-------------------+----------- enterprisedb | 10 | t | t | t | t | ******** | | 0 | | | (1 row)postgres=# select * from pg_namespace where oid=2200; nspname | nspowner | nspparent | nspobjecttype | nspforeignserver | nspsecdef | nspremoteschema | nspheadsrc | nspbodysrc | nspacl ---------+----------+-----------+---------------+------------------+-----------+-----------------+------------+------------+------------------------------------------------- public | 10 | 0 | 0 | 0 | f | | | | {enterprisedb=UC/enterprisedb,=UC/enterprisedb}(1 row)
2.变量
edb_variable
postgres=# \d edb_var* Table "pg_catalog.edb_variable" Column | Type | Collation | Nullable | Default ------------------+---------+-----------+----------+--------- varname | name | | not null | varpackage | oid | | not null | vartype | oid | | not null | vartypmod | integer | | not null | varaccess | "char" | | not null | varisconst | boolean | | not null | varseq | integer | | not null | varerrcode | integer | | not null | varsrc | text | | | varexceptionname | text | | | Indexes: "pg_variable_oid_index" UNIQUE, btree (oid) "pg_variable_varname_pkg_index" UNIQUE, btree (varpackage, varname)postgres=# select * from edb_variable where oid=16462; varname | varpackage | vartype | vartypmod | varaccess | varisconst | varseq | varerrcode | varsrc | varexceptionname ---------------+------------+---------+-----------+-----------+------------+--------+------------+--------+------------------ var_pk_demo_1 | 16454 | 1700 | -1 | + | f | 1 | 0 | | (1 row)
3.函数/过程
pg_proc
postgres=# \d pg_proc Table "pg_catalog.pg_proc" Column | Type | Collation | Nullable | Default ---------------------+--------------+-----------+----------+--------- proname | name | | not null | pronamespace | oid | | not null | proowner | oid | | not null | prolang | oid | | not null | procost | real | | not null | prorows | real | | not null | provariadic | oid | | not null | protransform | regproc | | not null | proisagg | boolean | | not null | proiswindow | boolean | | not null | prosecdef | boolean | | not null | proleakproof | boolean | | not null | proisstrict | boolean | | not null | proretset | boolean | | not null | proisweak | boolean | | not null | provolatile | "char" | | not null | proparallel | "char" | | not null | protype | "char" | | not null | proaccess | "char" | | not null | pronargs | smallint | | not null | pronargdefaults | smallint | | not null | prolineno | integer | | not null | prorettype | oid | | not null | proargtypes | oidvector | | not null | promemberattrs | text | | | proallargtypes | oid[] | | | proargmodes | "char"[] | | | proargdeclaredmodes | "char"[] | | | proargnames | text[] | | | proargdefaults | pg_node_tree | | | protrftypes | oid[] | | | prosrc | text | | not null | probin | text | | | proconfig | text[] | | | proacl | aclitem[] | | | Indexes: "pg_proc_oid_index" UNIQUE, btree (oid) "pg_proc_proname_args_nsp_index" UNIQUE, btree (proname, protype, proargtypes, pronamespace)postgres=# select proname,pronamespace from pg_proc where oid=16463; proname | pronamespace -----------+-------------- func_demo | 16454(1 row)postgres=# select proname,pronamespace from pg_proc where oid=16464; proname | pronamespace -----------+-------------- proc_demo | 16454(1 row)postgres=#
4.相关视图:edb_pkgelements、edb_package
postgres=# \d edb_pkg* View "pg_catalog.edb_pkgelements" Column | Type | Collation | Nullable | Default -------------+-------------------+-----------+----------+--------- packageoid | oid | | | eltname | name | | | visibilty | "char" | | | eltclass | character varying | | | eltdatatype | oid | | | nargs | smallint | | | argtypes | oidvector | | | argmodes | "char"[] | | | argnames | text[] | | | argdefvals | pg_node_tree | | | postgres=# select * from edb_pkgelements where packageoid = 16454; packageoid | eltname | visibilty | eltclass | eltdatatype | nargs | argtypes | argmodes | argnames | argdefvals ------------+---------------+-----------+----------+-------------+-------+----------+----------+----------+------------ 16454 | proc_demo | + | P | 2278 | 0 | | | | 16454 | var_pk_demo_1 | + | V | 1700 | | | | | 16454 | func_demo | + | F | 1700 | 0 | | | | (3 rows)postgres=# postgres=# select * from pg_views where viewname='edb_pkgelements'; schemaname | viewname | viewowner | definition ------------+-----------------+--------------+------------------------------------------------------------ pg_catalog | edb_pkgelements | enterprisedb | SELECT edb_variable.varpackage AS packageoid, + | | | edb_variable.varname AS eltname, + | | | edb_variable.varaccess AS visibilty, + | | | 'V'::character varying AS eltclass, + | | | edb_variable.vartype AS eltdatatype, + | | | NULL::smallint AS nargs, + | | | NULL::oidvector AS argtypes, + | | | NULL::"char"[] AS argmodes, + | | | NULL::text[] AS argnames, + | | | NULL::pg_node_tree AS argdefvals + | | | FROM edb_variable + | | | UNION + | | | SELECT pg_proc.pronamespace AS packageoid, + | | | pg_proc.proname AS eltname, + | | | pg_proc.proaccess AS visibilty, + | | | DECODE( (pg_proc.protype)::character varying + | | | , ('0'::text)::character varying + | | | , ('F'::text)::character varying + | | | , ('1'::text)::character varying + | | | , ('P'::text)::character varying + | | | , NULL::character varying + | | | ) AS eltclass, + | | | pg_proc.prorettype AS eltdatatype, + | | | pg_proc.pronargs AS nargs, + | | | pg_proc.proargtypes AS argtypes, + | | | pg_proc.proargmodes AS argmodes, + | | | pg_proc.proargnames AS argnames, + | | | pg_proc.proargdefaults AS argdefvals + | | | FROM pg_proc + | | | WHERE (pg_proc.pronamespace IN ( SELECT pg_namespace.oid+ | | | FROM pg_namespace + | | | WHERE (pg_namespace.nspparent <> (0)::oid)));(1 row)postgres=# select * from pg_views where viewname='edb_package'; schemaname | viewname | viewowner | definition ------------+-------------+--------------+--------------------------------------------------------------------------------------------- pg_catalog | edb_package | enterprisedb | SELECT pg_namespace.oid, + | | | pg_namespace.nspname AS pkgname, + | | | pg_namespace.nspparent AS pkgnamespace, + | | | pg_namespace.nspowner AS pkgowner, + | | | edb_get_packageheaddef(pg_namespace.oid) AS pkgheadsrc, + | | | edb_get_packagebodydef(pg_namespace.oid) AS pkgbodysrc, + | | | 'P'::character(1) AS pkgproperties, + | | | pg_namespace.nspacl AS pkgacl, + | | | pg_namespace.cmin, + | | | pg_namespace.xmin, + | | | pg_namespace.cmax, + | | | pg_namespace.xmax, + | | | pg_namespace.ctid + | | | FROM pg_namespace + | | | WHERE ((pg_namespace.nspparent <> (0)::oid) AND (pg_namespace.nspobjecttype = (0)::oid));(1 row)postgres=# select * from edb_package where pkgname='pk_demo'; oid | pkgname | pkgnamespace | pkgowner | pkgheadsrc | pkgbodysrc | pkgproperties | pkgacl | cmin | xmin | cmax | xmax | ctid -------+---------+--------------+----------+---------------------------------------------+---------------------------------------------------------------------------------+---------------+--------+------+------+------+------+-------- 16454 | pk_demo | 2200 | 10 | CREATE OR REPLACE PACKAGE public.pk_demo IS+| CREATE OR REPLACE PACKAGE BODY public.pk_demo IS +| P | | 2 | 1231 | 2 | 0 | (0,29) | | | | var_pk_demo_1 numeric; +| FUNCTION func_demo() RETURN numeric IS +| | | | | | | | | | | FUNCTION func_demo() RETURN numeric; +| BEGIN +| | | | | | | | | | | PROCEDURE proc_demo(); +| var_pk_demo_1 := 100; +| | | | | | | | | | | END | return var_pk_demo_1; +| | | | | | | | | | | | END; +| | | | | | | | | | | | +| | | | | | | | | | | | PROCEDURE proc_demo() IS +| | | | | | | | | | | | ret number; +| | | | | | | | | | | | BEGIN +| | | | | | | | | | | | select func_demo() into ret; +| | | | | | | | | | | | var_pk_demo_1 := 200; +| | | | | | | | | | | | dbms_output.put_line('var_pk_demo_1 := '||var_pk_demo_1||',ret = '||ret);+| | | | | | | | | | | | END; +| | | | | | | | | | | | END | | | | | | | (1 row)
"怎么理解edb中的package"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容
更多
知识
过程
实用
学有所成
接下来
函数
变量
困境
实际
情况
数据
文章
案例
组织结构
结构
编带
网站
行业
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全对安全感
数据库管理与日常维护说明
32位安装数据库引擎
网络无法连接服务器截图
供应链网络安全专项检查
2019网络安全热点新闻
虎牙炫迈的服务器
网络安全 外企
我的世界怎么防止服务器崩掉
云服务器怎么跟lora网关通信
201华为网络技术大赛
数据库锁可以分为
警惕网络安全讨论心得体会
需求更改不频繁 软件开发
服务器区安全设备部署
电力系统网络安全拓朴图
服务器安全狗如何卸载
云丁网络技术有限公司裁人
软件开发的团队职位
网络安全的主要内容是什么
软件开发人员赚钱方式
服务器硬件教程
安卓数据库定义外码
软件开发职业规划800字
怎么安全的叫服务器
w7数据库下载
acc数据库在哪打开
河北大学网络安全每年的报录比
公司内部服务器怎么进去
柳州网络安全培训机构包住宿