Postgresql 相关系统表查询
-
-
-
- CREATETABLETEST(
- TEST_NAMECHAR(30)NOTNULL,
- TEST_IDINTEGERDEFAULT'0' TEST_DATETIMESTAMPNULL
- );
- ALTERTABLETESTADDCONSTRAINTPK_TESTPRIMARYKEY(TEST_ID);
- --TABLETEST2withsomeCONSTRAINTsandanINDEX
- TABLETEST2(
- IDINTEGER FIELD1INTEGER,248); line-height:18px"> FIELD2CHAR(15),248); line-height:18px"> FIELD3VARCHAR(50),248); line-height:18px"> FIELD4 FIELD5 ID2TABLETEST2CONSTRAINTPK_TEST2KEY(ID2);
- CONSTRAINTTEST2_FIELD1ID_IDXUNIQUE(ID,FIELD1);
- CONSTRAINTTEST2_FIELD4_IDXUNIQUE(FIELD4);
- INDEXTEST2_FIELD5_IDXONTEST2(FIELD5);
- --TABLENUMBERS
- TABLENUMBERS(
- NUMBER ENCHAR(100) FR--TABLENEWTABLE
- TABLENEWTABLE(
- INTDEFAULT0 SOMENAMEVARCHAR(12),248); line-height:18px"> SOMEDATETABLENEWTABLECONSTRAINTPKINDEX_IDXKEY(ID);
- SEQUENCENEWTABLE_SEQINCREMENT1START1;
- --VIEWonTEST
- VIEW"testview"(
- TEST_NAME,248); line-height:18px"> TEST_ID,248); line-height:18px"> TEST_DATE
- )AS
- SELECT*
- FROMTEST
- WHERETEST_NAMELIKE't%';
- --VIEWonNUMBERS
- VIEW"numbersview"(
- NUMBER,248); line-height:18px"> TRANS_EN,248); line-height:18px"> TRANS_FR
- FROMNUMBERS
- WHERENUMBER>100;
- --TRIGGERonNEWTABLE
- FUNCTIONadd_stamp()RETURNSOPAQUEAS'
- BEGIN
- IF(NEW.somedateISNULLORNEW.somedate=0)THEN
- NEW.somedate:=CURRENT_TIMESTAMP;
- RETURNNEW;
- ENDIF;
- END;
- 'LANGUAGE'plpgsql';
- TRIGGERADDCURRENTDATE
- BEFOREINSERTORUPDATE
- ONnewtableFOREACHROW
- EXECUTEPROCEDUREadd_stamp();
- --TABLEsfortestingCONSTRAINTs
- TABLEtestconstraints(
- someidinteger somenamecharactervarying(10)CONSTRAINTtestconstraints_id_pkKEY(someid)
- TABLEtestconstraints2(
- ext_id modifieddate,248); line-height:18px"> uniquefield usractionCONSTRAINTtestconstraints_id_fkFOREIGNKEY(ext_id)
- REFERENCEStestconstraints(someid)MATCHSIMPLE
- ONUPDATECASCADEDELETECASCADE,153); background-color:inherit; font-weight:bold">CONSTRAINTunique_2_fields_idxUNIQUE(modified,usraction),153); background-color:inherit; font-weight:bold">CONSTRAINTuniquefld_idxUNIQUE(uniquefield)
- );
-
- --TABLETEST
- CREATETABLETEST(
- TEST_NAMECHAR(30)NOTNULL,
- TEST_IDINTEGERDEFAULT'0' TEST_DATETIMESTAMPNULL
- );
- ALTERTABLETESTADDCONSTRAINTPK_TESTPRIMARYKEY(TEST_ID);
- --TABLETEST2withsomeCONSTRAINTsandanINDEX
- TABLETEST2(
- IDINTEGER FIELD1INTEGER,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> FIELD2CHAR(15),248); line-height:18px"> FIELD3VARCHAR(50),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> FIELD4 FIELD5 ID2TABLETEST2CONSTRAINTPK_TEST2KEY(ID2);
- CONSTRAINTTEST2_FIELD1ID_IDXUNIQUE(ID,FIELD1);
- CONSTRAINTTEST2_FIELD4_IDXUNIQUE(FIELD4);
- INDEXTEST2_FIELD5_IDXONTEST2(FIELD5);
-
- --TABLENUMBERS
- TABLENUMBERS(
- NUMBER ENCHAR(100) FRNULL
- );
- --TABLENEWTABLE
- TABLENEWTABLE(
- INTDEFAULT0 SOMENAMEVARCHAR(12),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> SOMEDATETABLENEWTABLECONSTRAINTPKINDEX_IDXKEY(ID);
- SEQUENCENEWTABLE_SEQINCREMENT1START1;
- --VIEWonTEST
- VIEW"testview"(
- TEST_ID,248); line-height:18px"> TEST_DATE
- )AS
- SELECT*
- FROMTEST
- WHERETEST_NAMELIKE't%';
- --VIEWonNUMBERS
- VIEW"numbersview"(
- TRANS_EN,248); line-height:18px"> TRANS_FR
- FROMNUMBERS
- WHERENUMBER>100;
- --TRIGGERonNEWTABLE
- FUNCTIONadd_stamp()RETURNSOPAQUEAS'
- BEGIN
- IF(NEW.somedateISNULLORNEW.somedate=0)THEN
- NEW.somedate:=CURRENT_TIMESTAMP;
- RETURNNEW;
- ENDIF;
- END;
- 'LANGUAGE'plpgsql';
- TRIGGERADDCURRENTDATE
- BEFOREINSERTORUPDATE
- ONnewtableFOREACHROW
- EXECUTEPROCEDUREadd_stamp();
- --TABLEsfortestingCONSTRAINTs
- TABLEtestconstraints(
- someidinteger somenamecharactervarying(10)CONSTRAINTtestconstraints_id_pkKEY(someid)
- TABLEtestconstraints2(
- ext_id modifieddate,248); line-height:18px"> uniquefield usractionCONSTRAINTtestconstraints_id_fkFOREIGNKEY(ext_id)
- REFERENCEStestconstraints(someid)MATCHSIMPLE
- ONUPDATECASCADEDELETECASCADE,153); background-color:inherit; font-weight:bold">CONSTRAINTunique_2_fields_idxUNIQUE(modified,153); background-color:inherit; font-weight:bold">CONSTRAINTuniquefld_idxUNIQUE(uniquefield)
- );
列出所有数据库中的表名
SELECTrelname
FROMpg_class
- WHERErelname!~'^(pg_|sql_)'
- ANDrelkind='r';
- <!
- SELECTc.relnameAS"Name"
- FROMpg_classc,pg_useru
- WHEREc.relowner=u.usesysid
- ANDc.relkind='r'
- ANDNOTEXISTS(
- SELECT1
- FROMpg_views
- WHEREviewname=c.relname
- )
- ANDc.relname!~'^(pg_|sql_)'
- UNION
- FROMpg_classc
- WHEREc.relkind='r'
- FROMpg_user
- WHEREusesysid=c.relowner
- ANDc.relname!~'^pg_';
- -->
- --usinginformatION_SCHEMA:
- SELECTtable_name
- FROMinformation_schema.tables
- WHEREtable_type='BASETABLE'
- ANDtable_schemaIN
- ('pg_catalog','information_schema');
SELECTrelname
- FROMpg_class
- WHERErelname!~'^(pg_|sql_)'
- ANDrelkind='r';
- <!
- SELECTc.relnameAS"Name"
- FROMpg_classc,pg_useru
- WHEREc.relowner=u.usesysid
- ANDc.relkind='r'
- ANDNOTEXISTS(
- SELECT1
- FROMpg_views
- WHEREviewname=c.relname
- )
- ANDc.relname!~'^(pg_|sql_)'
- UNION
- AS"Name"
- FROMpg_classc
- WHEREc.relkind='r'
- NOTEXISTS(
- SELECT1
- FROMpg_user
- WHEREusesysid=c.relowner
- )
- ANDc.relname!~'^pg_';
- -->
- --usinginformatION_SCHEMA:
- SELECTtable_name
- FROMinformation_schema.tables
- WHEREtable_type='BASETABLE'
- ANDtable_schemaIN
- ('pg_catalog','information_schema');
列出所有视图
sql代码
SELECTviewname
- WHEREviewname!~'^pg_';
- --withpostgresql7.4andlater:
- WHEREschemaname'information_schema')
- ANDviewname!~'^pg_';
- WHEREtable_type='VIEW'
- ANDtable_name!~'^pg_';
- --or
- FROMinformation_schema.views
- WHEREtable_schemaIN('pg_catalog',248); line-height:18px"> #showonlytheVIEWsreferencingagiventable
- NATURALJOINpg_tables
- WHEREtablename='test';
- -->
--withpostgresql7.2:
- SELECTviewname
- WHEREviewname!~'^pg_';
- --withpostgresql7.4andlater:
- WHEREschemaname'information_schema')
- ANDviewname!~'^pg_';
- --usinginformatION_SCHEMA:
- SELECTtable_name
- FROMinformation_schema.tables
- WHEREtable_type='VIEW'
- IN
- ('pg_catalog','information_schema')
- ANDtable_name!~'^pg_';
- --or
- FROMinformation_schema.views
- WHEREtable_schemaIN('pg_catalog',128); background-color:inherit">ANDtable_name!~'^pg_';
- <!
- #showonlytheVIEWsreferencingagiventable
- NATURALJOINpg_tables
- WHEREtablename='test';
- -->
列出所有用户
SELECTusename
FROMpg_user;
SELECTusename
- FROMpg_user;
列出某表中得所有字段
SELECTa.attname
sql" style="margin:0px 0px 1px 45px!important; padding:0px; border:none; list-style-position:initial; background-color:rgb(255,pg_attributea,pg_typet
- WHEREc.relname='test2'
- ANDa.attnum>0
- ANDa.attrelid=c.oid
- ANDa.atttypid=t.oid
- --withinformatION_SCHEMA:
- SELECTcolumn_name
- FROMinformation_schema.columns
- WHEREtable_name='test2';
SELECTa.attname
- WHEREc.relname='test2'
- ANDa.attnum>0
- ANDa.attrelid=c.oid
- ANDa.atttypid=t.oid
- --withinformatION_SCHEMA:
- SELECTcolumn_name
- FROMinformation_schema.columns
- WHEREtable_name='test2';
列出某表字段的信息
SELECTa.attnum
ASordinal_position,
a.attnameAScolumn_name,248); line-height:18px"> t.typnameASdata_type,248); line-height:18px"> a.attlenAScharacter_maximum_length,248); line-height:18px"> a.atttypmodASmodifier,248); line-height:18px"> a.attnotnullASnotnull,248); line-height:18px"> a.atthasdefAShasdefault
- pg_attributea,248); line-height:18px"> pg_typet
- ORDER
BYa.attnum;
- SELECT
ordinal_position,248); line-height:18px"> column_name,248); line-height:18px"> data_type,248); line-height:18px"> column_default,248); line-height:18px"> is_nullable,248); line-height:18px"> character_maximum_length,248); line-height:18px"> numeric_precision
- WHERE
table_name='test2'
- BY
ordinal_position;
SELECTa.attnumASordinal_position,248); line-height:18px"> a.attnameAScolumn_name,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> t.typnameASdata_type,248); line-height:18px"> a.attlenAScharacter_maximum_length,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> a.atttypmodASmodifier,248); line-height:18px"> a.attnotnullASnotnull,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> a.atthasdefAShasdefault
- pg_attributea,248); line-height:18px"> pg_typet
- ORDER
BYa.attnum;
- --withinformatION_SCHEMA:
- SELECT
ordinal_position,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> data_type,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> is_nullable,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> numeric_precision
- FROM
information_schema.columns
- WHERE
table_name='test2'
- BY
ordinal_position;
List INDICES
Here's the query that will return the names of the INDICES defined in the TEST2 table. Unfortunately I have no idea how to extract them from the informatION_SCHEMA. If you do,please let me kNow.
NB: the CONSTRAINTs are not listed
WHEREoidIN(
SELECTindexrelid
FROMpg_index,pg_class
WHEREpg_class.relname='test2'
ANDpg_class.oid=pg_index.indrelid
ANDindisunique!='t'
ANDindisprimary!='t'
copy
WHEREoidIN(
SELECTindexrelid
FROMpg_index,pg_class
WHEREpg_class.relname='test2'
ANDpg_class.oid=pg_index.indrelid
ANDindisunique!='t'
ANDindisprimary!='t'
);
列出表的索引信息
SELECTrelname,indkey
FROMpg_class,pg_index
- WHEREpg_class.oid=pg_index.indexrelid
- ANDpg_class.oid
- SELECTt.relname,a.attname,a.attnum
- FROMpg_indexc
- LEFTJOINpg_classt
- ONc.indrelid=t.oid
- JOINpg_attributea
- ONa.attrelid=t.oid
- ANDa.attnum=ANY(indkey)
- WHEREt.relname='test2'
- ANDa.attnum=6;
SELECTrelname,indkey
- FROMpg_class,pg_index
- WHEREpg_class.oid=pg_index.indexrelid
- ANDpg_class.oidIN(
- SELECTindexrelid
- WHEREpg_class.relname='test2'
- ANDpg_class.oid=pg_index.indrelid
- ANDindisunique!='t'
- ANDindisprimary!='t'
- SELECTt.relname,a.attnum
- FROMpg_indexc
- LEFTJOINpg_classt
- ONc.indrelid=t.oid
- JOINpg_attributea
- ONa.attrelid=t.oid
- ANDa.attnum=ANY(indkey)
- WHEREt.relname='test2'
- ANDa.attnum=6;
列出表的约束
SELECTc.conname
ASconstraint_name,147); background-color:inherit">CASEc.contype
WHEN'c'THEN'CHECK'
WHEN'f'THEN'FOREIGNKEY'
WHEN'p'THEN'PRIMARYKEY'
WHEN'u'THEN'UNIQUE'
ENDAS"constraint_type",147); background-color:inherit">CASEWHENc.condeferrable='f'THEN0ELSE1ASis_deferrable,153); background-color:inherit; font-weight:bold">WHENc.condeferred='f'ASis_deferred,248); line-height:18px"> t.relnameAStable_name,248); line-height:18px"> array_to_string(c.conkey,'')ASconstraint_key,147); background-color:inherit">CASEconfupdtype
WHEN'a'THEN'NOACTION'
WHEN'r'THEN'RESTRICT'
THEN'CASCADE'
WHEN'n'THEN'SETNULL'
WHEN'd'THEN'SETDEFAULT'
ASon_update,147); background-color:inherit">CASEconfdeltype
ASon_delete,147); background-color:inherit">CASEconfmatchtype
THEN'UNSPECIFIED'
THEN'FULL'
THEN'PARTIAL'
ASmatch_type,248); line-height:18px"> t2.relnameASreferences_table,248); line-height:18px"> array_to_string(c.confkey,153); background-color:inherit; font-weight:bold">ASfk_constraint_key
FROMpg_constraintc
JOINpg_classtONc.conrelid=t.oid
JOINpg_classt2ONc.confrelid=t2.oid
WHEREt.relname='testconstraints2'
ANDc.conname='testconstraints_id_fk';
SELECTtc.constraint_name,248); line-height:18px"> tc.constraint_type,248); line-height:18px"> tc.table_name,248); line-height:18px"> kcu.column_name,248); line-height:18px"> tc.is_deferrable,248); line-height:18px"> tc.initially_deferred,248); line-height:18px"> rc.match_option rc.update_rule rc.delete_rule ccu.table_name ccu.column_nameASreferences_field
FROMinformation_schema.table_constraintstc
JOINinformation_schema.key_column_usagekcu
ONtc.constraint_catalog=kcu.constraint_catalog
ANDtc.constraint_schema=kcu.constraint_schema
ANDtc.constraint_name=kcu.constraint_name
JOINinformation_schema.referential_constraintsrc
ONtc.constraint_catalog=rc.constraint_catalog
ANDtc.constraint_schema=rc.constraint_schema
ANDtc.constraint_name=rc.constraint_name
JOINinformation_schema.constraint_column_usageccu
ONrc.unique_constraint_catalog=ccu.constraint_catalog
ANDrc.unique_constraint_schema=ccu.constraint_schema
ANDrc.unique_constraint_name=ccu.constraint_name
WHEREtc.table_name='testconstraints2'
ANDtc.constraint_name='testconstraints_id_fk';
SELECTc.connameASconstraint_name,248); line-height:18px"> CASEc.contype
- WHEN
'c'THEN'CHECK'
- WHEN'f'THEN'FOREIGNKEY'
- WHEN'p'THEN'PRIMARYKEY'
- WHEN'u'THEN'UNIQUE'
- ENDAS"constraint_type",147); background-color:inherit">CASEWHENc.condeferrable='f'THEN0ELSE1ASis_deferrable,153); background-color:inherit; font-weight:bold">WHENc.condeferred='f'ASis_deferred,248); line-height:18px"> t.relnameAStable_name,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> array_to_string(c.conkey,'')ASconstraint_key,147); background-color:inherit">CASEconfupdtype
- WHEN'a'THEN'NOACTION'
- WHEN'r'THEN'RESTRICT'
- THEN'CASCADE'
- WHEN'n'THEN'SETNULL'
- WHEN'd'THEN'SETDEFAULT'
- ASon_update,147); background-color:inherit">CASEconfdeltype
- THEN'NOACTION'
- THEN'RESTRICT'
- THEN'CASCADE'
- THEN'SETNULL'
- THEN'SETDEFAULT'
- ASon_delete,147); background-color:inherit">CASEconfmatchtype
- THEN'UNSPECIFIED'
- THEN'FULL'
- THEN'PARTIAL'
- ASmatch_type,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> t2.relnameASreferences_table,153); background-color:inherit; font-weight:bold">ASfk_constraint_key
- FROMpg_constraintc
- JOINpg_classtONc.conrelid=t.oid
- JOINpg_classt2ONc.confrelid=t2.oid
- WHEREt.relname='testconstraints2'
- ANDc.conname='testconstraints_id_fk';
- SELECTtc.constraint_name,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> tc.table_name,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> tc.is_deferrable,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> rc.match_option rc.update_rule rc.delete_rule ccu.table_name ccu.column_nameASreferences_field
- FROMinformation_schema.table_constraintstc
- JOINinformation_schema.key_column_usagekcu
- ONtc.constraint_catalog=kcu.constraint_catalog
- ANDtc.constraint_schema=kcu.constraint_schema
- ANDtc.constraint_name=kcu.constraint_name
- JOINinformation_schema.referential_constraintsrc
- ONtc.constraint_catalog=rc.constraint_catalog
- ANDtc.constraint_schema=rc.constraint_schema
- ANDtc.constraint_name=rc.constraint_name
- JOINinformation_schema.constraint_column_usageccu
- ONrc.unique_constraint_catalog=ccu.constraint_catalog
- ANDrc.unique_constraint_schema=ccu.constraint_schema
- ANDrc.unique_constraint_name=ccu.constraint_name
- WHEREtc.table_name='testconstraints2'
- ANDtc.constraint_name='testconstraints_id_fk';
列出所有序列
WHERErelkind='S'
ANDrelnamespaceSELECToid
FROMpg_namespace
WHEREnspnameLIKE'pg_%'
ANDnspname!='information_schema'
copy
WHERErelkind='S'
ANDrelnamespaceSELECToid
FROMpg_namespace
WHEREnspnameLIKE'pg_%'
ANDnspname!='information_schema'
);
列出所有触发器
SELECTtrg.tgnameAStrigger_name
FROM
pg_triggertrg,pg_classtbl
WHEREtrg.tgrelid=tbl.oid
ANDtbl.relname!~'^pg_';
SELECTtgnameAStrigger_name
FROMpg_trigger
WHEREtgname!~'^pg_';
SELECTdisTINCTtrigger_name
FROMinformation_schema.triggers
WHEREtrigger_schema'information_schema');
SELECTtrg.tgnameANDtbl.relname='newtable';
WHEREevent_object_table='newtable'
ANDtrigger_schemacopy
SELECTtrg.tgnameAStrigger_name
- FROMpg_triggertrg,pg_classtbl
- WHEREtrg.tgrelid=tbl.oid
- ANDtbl.relname!~'^pg_';
- --or
- SELECTtgnameAStrigger_name
- FROMpg_trigger
- WHEREtgname!~'^pg_';
- SELECTdisTINCTtrigger_name
- FROMinformation_schema.triggers
- WHEREtrigger_schema'information_schema');
- ANDtbl.relname='newtable';
- WHEREevent_object_table='newtable'
- ANDtrigger_schema列出所有触发器的信息
SELECTtrg.tgname
AStrigger_name,248); line-height:18px"> tbl.relname p.pronameASfunction_name,147); background-color:inherit">CASEtrg.tgtype&cast(2asint2)
- WHEN0THEN'AFTER'
- ELSE'BEFORE'
- AStrigger_type,147); background-color:inherit">cast(28WHEN16THEN'UPDATE'
- WHEN8THEN'DELETE'
- WHEN4THEN'INSERT'
- WHEN20THEN'INSERT,UPDATE'
- WHEN28
- WHEN24THEN'UPDATE,153); background-color:inherit; font-weight:bold">WHEN12AStrigger_event,147); background-color:inherit">cast(1THEN'STATEMENT'
- ELSE'ROW'
- ASaction_orientation
- pg_classtbl,248); line-height:18px"> pg_procp
- ANDtrg.tgfoid=p.oid
- copy
AStrigger_name,248); line-height:18px"> tbl.relname p.pronameASfunction_name,147); background-color:inherit">CASEtrg.tgtype&cast(2asint2)
- WHEN0THEN'AFTER'
- ELSE'BEFORE'
- AStrigger_type,147); background-color:inherit">cast(28WHEN16THEN'UPDATE'
- WHEN8THEN'DELETE'
- WHEN4THEN'INSERT'
- WHEN20THEN'INSERT,UPDATE'
- WHEN28
- WHEN24THEN'UPDATE,DELETE'
- WHEN12AStrigger_event,147); background-color:inherit">cast(1asint2)
- THEN'STATEMENT'
- ELSE'ROW'
- ASaction_orientation
- pg_procp
- WHEREtrg.tgrelid=tbl.oid
- ANDtrg.tgfoid=p.oid
- 列出所有函数
SELECTproname
FROMpg_procpr,248); line-height:18px"> pg_typetp
- WHEREtp.oid=pr.prorettype
- ANDpr.proisagg=FALSE
- ANDtp.typname<>'trigger'
- ANDpr.pronamespaceSELECTroutine_name
- FROMinformation_schema.routines
- WHEREspecific_schemaANDtype_udt_name!='trigger';
SELECTproname
- FROMpg_procpr,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> pg_typetp
- WHEREtp.oid=pr.prorettype
- ANDpr.proisagg=FALSE
- ANDtp.typname<>'trigger'
- ANDpr.pronamespaceSELECToid
- FROMpg_namespace
- LIKE'pg_%'
- ANDnspname!='information_schema'
- SELECTroutine_name
- FROMinformation_schema.routines
- WHEREspecific_schemaANDtype_udt_name!='trigger';
Albe Laurenz sent me the following function that is even more informative: for a function name and schema,it selects the position in the argument list,the direction,the name and the data-type of each argument. This procedure requires Postgresql 8.1 or later.
CREATE
OR
REPLACE
FUNCTION
public.function_args(
INfuncnamevarying,128); background-color:inherit">INschemaOUTposinteger,153); background-color:inherit; font-weight:bold">OUTdirectioncharacter,153); background-color:inherit; font-weight:bold">OUTargnameOUTdatatypevarying)
- RETURNSSetoFRECORDAS$$DECLARE
- rettypevarying;
- argtypesoidvector;
- allargtypesoid[];
- argmodes"char"[];
- argnamestext[];
- miniinteger;
- maxi /*getobjectIDoffunction*/
- INTOrettype,argtypes,allargtypes,argmodes,argnames
- CASE
- WHENpg_proc.proretset
- THEN'setof'||pg_catalog.format_type(pg_proc.prorettype,NULL)
- ELSEpg_catalog.format_type(pg_proc.prorettype,128); background-color:inherit">NULL)END,248); line-height:18px"> pg_proc.proargtypes,248); line-height:18px"> pg_proc.proallargtypes,248); line-height:18px"> pg_proc.proargmodes,248); line-height:18px"> pg_proc.proargnames
- FROMpg_catalog.pg_proc
- JOINpg_catalog.pg_namespace
- ON(pg_proc.pronamespace=pg_namespace.oid)
- WHEREpg_proc.prorettype<>'pg_catalog.cstring'::pg_catalog.regtype
- AND(pg_proc.proargtypes[0]ORpg_proc.proargtypes[0]<>'pg_catalog.cstring'::pg_catalog.regtype)
- NOTpg_proc.proisagg
- ANDpg_proc.proname=funcname
- ANDpg_namespace.nspname=schema
- ANDpg_catalog.pg_function_is_visible(pg_proc.oid);
- /*bailoutifnotfound*/
- IFNOTFOUNDRETURN;
- /*returnarowforthereturnvalue*/
- pos=0;
- direction='o'::char;
- argname='RETURNVALUE';
- datatype=rettype;
- RETURNNEXT;
- /*unfortunatelyallargtypesisNULLiftherearenoOUTparameters*/
- IFallargtypesNULL mini=array_lower(argtypes,1);maxi=array_upper(argtypes,1);
- ELSE
- mini=array_lower(allargtypes,1);maxi=array_upper(allargtypes,248); line-height:18px"> IFmaxi<miniTHENRETURN; /*loopallthearguments*/
- FORiINmini..maxiLOOP
- pos=i-mini+1;
- IFargnames argname=NULL;
- argname=argnames[pos];
- direction='i':: datatype=pg_catalog.format_type(argtypes[i],128); background-color:inherit">NULL);
- direction=argmodes[i];
- datatype=pg_catalog.format_type(allargtypes[i],153); background-color:inherit; font-weight:bold">ENDLOOP;
- END;$$LANGUAGEplpgsqlSTABLESTRICTSecurityINVOKER;
- COMMENTFUNCTIONpublic.function_args(character
- IS$$Forafunctionnameandschema,thisprocedureselectsforeach
- argumentthefollowingdata:
- -positionintheargumentlist(0returnvalue)
- -direction'i','o',128); background-color:inherit">or'b'
- -name(NULLifnotdefined)
- -datatype$$;
CREATEORREPLACEFUNCTIONpublic.function_args(
- INfuncnamevarying,128); background-color:inherit">INschemaOUTposinteger,153); background-color:inherit; font-weight:bold">OUTdirectioncharacter,153); background-color:inherit; font-weight:bold">OUTargnameOUTdatatypevarying)
- RETURNSSetoFRECORDAS$$DECLARE
- rettypevarying;
- argtypesoidvector;
- allargtypesoid[];
- argmodes"char"[];
- argnamestext[];
- miniinteger;
- maxiinteger;
- /*getobjectIDoffunction*/
- INTOrettype,argnames
- CASE
- WHENpg_proc.proretset
- THEN'setof'||pg_catalog.format_type(pg_proc.prorettype,128); background-color:inherit">NULL)
- ELSEpg_catalog.format_type(pg_proc.prorettype,128); background-color:inherit">NULL)END,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> pg_proc.proargtypes,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px"> pg_proc.proargmodes,248); line-height:18px"> pg_proc.proargnames
- FROMpg_catalog.pg_proc
- JOINpg_catalog.pg_namespace
- ON(pg_proc.pronamespace=pg_namespace.oid)
- WHEREpg_proc.prorettype<>'pg_catalog.cstring'::pg_catalog.regtype
- AND(pg_proc.proargtypes[0]ORpg_proc.proargtypes[0]<>'pg_catalog.cstring'::pg_catalog.regtype)
- NOTpg_proc.proisagg
- ANDpg_proc.proname=funcname
- ANDpg_namespace.nspname=schema
- ANDpg_catalog.pg_function_is_visible(pg_proc.oid);
- /*bailoutifnotfound*/
- IFNOTFOUNDRETURN;
- ENDIF;
- /*returnarowforthereturnvalue*/
- pos=0;
- direction='o'::char;
- argname='RETURNVALUE';
- datatype=rettype;
- RETURNNEXT;
- /*unfortunatelyallargtypesisNULLiftherearenoOUTparameters*/
- IFallargtypesNULLELSE
- IFmaxi<miniTHENRETURN; /*loopallthearguments*/
- FORiINmini..maxiLOOP
- pos=i-mini+1;
- IFargnames argname=NULL;
- argname=argnames[pos];
- IFallargtypesTHEN
- direction='i'::NULL);
- direction=argmodes[i];
- datatype=pg_catalog.format_type(allargtypes[i],128); background-color:inherit">NULL);
- NEXT;
- ENDLOOP;
- END;$$LANGUAGEplpgsqlSTABLESTRICTSecurityINVOKER;
- COMMENTpublic.function_args(character
- IS$$Forafunctionnameandschema,153); background-color:inherit; font-weight:bold">procedureselectsforeach
- argumentthefollowingdata:
- -positionintheargumentlist(0returnvalue)
- -direction'i','o',128); background-color:inherit">or'b'
- -name(NULLifnotdefined)
- -datatype$$;
SELECTp.pronameASprocedure_name,248); line-height:18px"> p.pronargsASnum_args,248); line-height:18px"> t1.typnameASreturn_type,248); line-height:18px"> a.rolnameASprocedure_owner,248); line-height:18px"> l.lannameASlanguage_type,248); line-height:18px"> p.proargtypesASargument_types_oids,248); line-height:18px"> prosrcASbody
FROMpg_procp
JOINpg_typet1ONp.prorettype=t1.oid
JOINpg_authidaONp.proowner=a.oid
JOINpg_languagelONp.prolang=l.oid
WHEREproname=:PROCEDURE_NAME;
相关文章
项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。
先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...