本篇内容介绍了“怎么理解edb中的package”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创建package
兼容Oracle语法

createorreplacepackagepk_demoasvar_pk_demo_1number;functionfunc_demo()returnnumber;procedureproc_demo();endpk_demo;createorreplacepackagebodypk_demoasfunctionfunc_demo()returnnumberASBEGINvar_pk_demo_1:=100;returnvar_pk_demo_1;END;procedureproc_demo()ASretnumber;BEGINselectfunc_demo()intoret;var_pk_demo_1:=200;dbms_output.put_line('var_pk_demo_1:='||var_pk_demo_1||',ret='||ret);END;ENDpk_demo;

元数据
1.存储组织结构
pg_namespace

postgres=#\dpg_namespaceTable"pg_catalog.pg_namespace"Column|Type|Collation|Nullable|Default------------------+-----------+-----------+----------+---------nspname|name||notnull|nspowner|oid||notnull|nspparent|oid||notnull|nspobjecttype|oid||notnull|nspforeignserver|oid||notnull|nspsecdef|boolean||notnull|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*frompg_namespacewherenspname='pk_demo';nspname|nspowner|nspparent|nspobjecttype|nspforeignserver|nspsecdef|nspremoteschema|nspheadsrc|nspbodysrc|nspacl---------+----------+-----------+---------------+------------------+-----------+-----------------+---------------------+---------------------+--------pk_demo|10|2200|0|0|t||+|+||||||||@VARIABLE16462@;+|@FUNCTION16463@;+||||||||@FUNCTION16463@;+|+||||||||@FUNCTION16464@;+|@FUNCTION16464@;+||||||||||(1row)postgres=#select*frompg_userwhereusesysid=10;usename|usesysid|usecreatedb|usesuper|userepl|usebypassrls|passwd|valuntil|useaccountstatus|uselockdate|usepasswordexpire|useconfig--------------+----------+-------------+----------+---------+--------------+----------+----------+------------------+-------------+-------------------+-----------enterprisedb|10|t|t|t|t|********||0|||(1row)postgres=#select*frompg_namespacewhereoid=2200;nspname|nspowner|nspparent|nspobjecttype|nspforeignserver|nspsecdef|nspremoteschema|nspheadsrc|nspbodysrc|nspacl---------+----------+-----------+---------------+------------------+-----------+-----------------+------------+------------+-------------------------------------------------public|10|0|0|0|f||||{enterprisedb=UC/enterprisedb,=UC/enterprisedb}(1row)

2.变量
edb_variable

postgres=#\dedb_var*Table"pg_catalog.edb_variable"Column|Type|Collation|Nullable|Default------------------+---------+-----------+----------+---------varname|name||notnull|varpackage|oid||notnull|vartype|oid||notnull|vartypmod|integer||notnull|varaccess|"char"||notnull|varisconst|boolean||notnull|varseq|integer||notnull|varerrcode|integer||notnull|varsrc|text|||varexceptionname|text|||Indexes:"pg_variable_oid_index"UNIQUE,btree(oid)"pg_variable_varname_pkg_index"UNIQUE,btree(varpackage,varname)postgres=#select*fromedb_variablewhereoid=16462;varname|varpackage|vartype|vartypmod|varaccess|varisconst|varseq|varerrcode|varsrc|varexceptionname---------------+------------+---------+-----------+-----------+------------+--------+------------+--------+------------------var_pk_demo_1|16454|1700|-1|+|f|1|0||(1row)

3.函数/过程
pg_proc

postgres=#\dpg_procTable"pg_catalog.pg_proc"Column|Type|Collation|Nullable|Default---------------------+--------------+-----------+----------+---------proname|name||notnull|pronamespace|oid||notnull|proowner|oid||notnull|prolang|oid||notnull|procost|real||notnull|prorows|real||notnull|provariadic|oid||notnull|protransform|regproc||notnull|proisagg|boolean||notnull|proiswindow|boolean||notnull|prosecdef|boolean||notnull|proleakproof|boolean||notnull|proisstrict|boolean||notnull|proretset|boolean||notnull|proisweak|boolean||notnull|provolatile|"char"||notnull|proparallel|"char"||notnull|protype|"char"||notnull|proaccess|"char"||notnull|pronargs|smallint||notnull|pronargdefaults|smallint||notnull|prolineno|integer||notnull|prorettype|oid||notnull|proargtypes|oidvector||notnull|promemberattrs|text|||proallargtypes|oid[]|||proargmodes|"char"[]|||proargdeclaredmodes|"char"[]|||proargnames|text[]|||proargdefaults|pg_node_tree|||protrftypes|oid[]|||prosrc|text||notnull|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=#selectproname,pronamespacefrompg_procwhereoid=16463;proname|pronamespace-----------+--------------func_demo|16454(1row)postgres=#selectproname,pronamespacefrompg_procwhereoid=16464;proname|pronamespace-----------+--------------proc_demo|16454(1row)postgres=#

4.相关视图:edb_pkgelements、edb_package

postgres=#\dedb_pkg*View"pg_catalog.edb_pkgelements"Column|Type|Collation|Nullable|Default-------------+-------------------+-----------+----------+---------packageoid|oid|||eltname|name|||visibilty|"char"|||eltclass|charactervarying|||eltdatatype|oid|||nargs|smallint|||argtypes|oidvector|||argmodes|"char"[]|||argnames|text[]|||argdefvals|pg_node_tree|||postgres=#select*fromedb_pkgelementswherepackageoid=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||||(3rows)postgres=#postgres=#select*frompg_viewswhereviewname='edb_pkgelements';schemaname|viewname|viewowner|definition------------+-----------------+--------------+------------------------------------------------------------pg_catalog|edb_pkgelements|enterprisedb|SELECTedb_variable.varpackageASpackageoid,+|||edb_variable.varnameASeltname,+|||edb_variable.varaccessASvisibilty,+|||'V'::charactervaryingASeltclass,+|||edb_variable.vartypeASeltdatatype,+|||NULL::smallintASnargs,+|||NULL::oidvectorASargtypes,+|||NULL::"char"[]ASargmodes,+|||NULL::text[]ASargnames,+|||NULL::pg_node_treeASargdefvals+|||FROMedb_variable+|||UNION+|||SELECTpg_proc.pronamespaceASpackageoid,+|||pg_proc.pronameASeltname,+|||pg_proc.proaccessASvisibilty,+|||DECODE((pg_proc.protype)::charactervarying+|||,('0'::text)::charactervarying+|||,('F'::text)::charactervarying+|||,('1'::text)::charactervarying+|||,('P'::text)::charactervarying+|||,NULL::charactervarying+|||)ASeltclass,+|||pg_proc.prorettypeASeltdatatype,+|||pg_proc.pronargsASnargs,+|||pg_proc.proargtypesASargtypes,+|||pg_proc.proargmodesASargmodes,+|||pg_proc.proargnamesASargnames,+|||pg_proc.proargdefaultsASargdefvals+|||FROMpg_proc+|||WHERE(pg_proc.pronamespaceIN(SELECTpg_namespace.oid+|||FROMpg_namespace+|||WHERE(pg_namespace.nspparent<>(0)::oid)));(1row)postgres=#select*frompg_viewswhereviewname='edb_package';schemaname|viewname|viewowner|definition------------+-------------+--------------+---------------------------------------------------------------------------------------------pg_catalog|edb_package|enterprisedb|SELECTpg_namespace.oid,+|||pg_namespace.nspnameASpkgname,+|||pg_namespace.nspparentASpkgnamespace,+|||pg_namespace.nspownerASpkgowner,+|||edb_get_packageheaddef(pg_namespace.oid)ASpkgheadsrc,+|||edb_get_packagebodydef(pg_namespace.oid)ASpkgbodysrc,+|||'P'::character(1)ASpkgproperties,+|||pg_namespace.nspaclASpkgacl,+|||pg_namespace.cmin,+|||pg_namespace.xmin,+|||pg_namespace.cmax,+|||pg_namespace.xmax,+|||pg_namespace.ctid+|||FROMpg_namespace+|||WHERE((pg_namespace.nspparent<>(0)::oid)AND(pg_namespace.nspobjecttype=(0)::oid));(1row)postgres=#select*fromedb_packagewherepkgname='pk_demo';oid|pkgname|pkgnamespace|pkgowner|pkgheadsrc|pkgbodysrc|pkgproperties|pkgacl|cmin|xmin|cmax|xmax|ctid-------+---------+--------------+----------+---------------------------------------------+---------------------------------------------------------------------------------+---------------+--------+------+------+------+------+--------16454|pk_demo|2200|10|CREATEORREPLACEPACKAGEpublic.pk_demoIS+|CREATEORREPLACEPACKAGEBODYpublic.pk_demoIS+|P||2|1231|2|0|(0,29)||||var_pk_demo_1numeric;+|FUNCTIONfunc_demo()RETURNnumericIS+|||||||||||FUNCTIONfunc_demo()RETURNnumeric;+|BEGIN+|||||||||||PROCEDUREproc_demo();+|var_pk_demo_1:=100;+|||||||||||END|returnvar_pk_demo_1;+||||||||||||END;+||||||||||||+||||||||||||PROCEDUREproc_demo()IS+||||||||||||retnumber;+||||||||||||BEGIN+||||||||||||selectfunc_demo()intoret;+||||||||||||var_pk_demo_1:=200;+||||||||||||dbms_output.put_line('var_pk_demo_1:='||var_pk_demo_1||',ret='||ret);+||||||||||||END;+||||||||||||END|||||||(1row)

“怎么理解edb中的package”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!