-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUTL$DESC.package.sql
135 lines (118 loc) · 5.36 KB
/
UTL$DESC.package.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
CREATE OR REPLACE
PACKAGE UTL$DESC
IS
/**
* ======================================================================
* LICENSE and ANNOTATION
* ======================================================================
*
* Oracle SQL*Plus DESC replacement
*
* ======================================================================
* Distributed under "The GNU Lesser General Public License, version 3.0 (LGPLv3)"
* ======================================================================
*
* UTL$DESC
*
* Copyright (c) 2012, Martin Mareš <martin at sequel-code.cz>
* All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* ======================================================================
*/
/**
* ----------------------------------------------------------------------
* Types and Subtypes
* ----------------------------------------------------------------------
*/
SUBTYPE T_MAX_STRING IS UTL$DATA_TYPES.T_MAX_STRING;
SUBTYPE T_SMALL_STRING IS UTL$DATA_TYPES.T_SMALL_STRING;
SUBTYPE T_MAX_SQL_STRING IS UTL$DATA_TYPES.T_MAX_SQL_STRING;
SUBTYPE T_PLS_INTEGER IS UTL$DATA_TYPES.T_PLS_INTEGER;
SUBTYPE T_DB_BOOLEAN IS UTL$DATA_TYPES.T_DB_BOOLEAN;
SUBTYPE T_SMALL_INTEGER IS UTL$DATA_TYPES.T_SMALL_INTEGER;
SUBTYPE T_BIG_INTEGER IS UTL$DATA_TYPES.T_BIG_INTEGER;
SUBTYPE T_LONG_STRING IS UTL$DATA_TYPES.T_LONG_STRING;
SUBTYPE T_BINARY_INTEGER IS UTL$DATA_TYPES.T_BINARY_INTEGER;
/**
* ----------------------------------------------------------------------
* Basic constants
* ----------------------------------------------------------------------
*/
-- Object types
C_OBJECT CONSTANT T_SMALL_STRING := 'OBJECT';
C_TABLE CONSTANT T_SMALL_STRING := 'TABLE';
C_INDEX CONSTANT T_SMALL_STRING := 'INDEX';
C_TRIGGER CONSTANT T_SMALL_STRING := 'TRIGGER';
C_SEQUENCE CONSTANT T_SMALL_STRING := 'SEQUENCE';
C_CONSTRAINT CONSTANT T_SMALL_STRING := 'CONSTRAINT';
C_PROCEDURE CONSTANT T_SMALL_STRING := 'PROCEDURE';
C_FUNCTION CONSTANT T_SMALL_STRING := 'FUNCTION';
C_PACKAGE CONSTANT T_SMALL_STRING := 'PACKAGE';
-- Objects
C_OBJ_CREATED CONSTANT T_SMALL_STRING := '{ObjectCreated}';
C_OBJ_LAST_DDL_TIME CONSTANT T_SMALL_STRING := '{ObjectLastDdlTime}';
-- Tables
C_TBL_OWNER CONSTANT T_SMALL_STRING := '{TableOwner}';
C_TBL_NAME CONSTANT T_SMALL_STRING := '{TableName}';
-- Columns
C_COL_NAME CONSTANT T_SMALL_STRING := '{ColumnName}';
C_COL_DATA_TYPE CONSTANT T_SMALL_STRING := '{ColumnDataType}';
C_COL_COMMENT CONSTANT T_SMALL_STRING := '{ColumnComment}';
/**
* ----------------------------------------------------------------------
* Export format type constants
* ----------------------------------------------------------------------
*/
C_FORMAT_ASCII CONSTANT T_SMALL_STRING := 'ASCII';
C_FORMAT_MARKDOWN CONSTANT T_SMALL_STRING := 'MARKDOWN';
C_FORMAT_TWIKI CONSTANT T_SMALL_STRING := 'TWIKI';
C_FORMAT_DEFAULT CONSTANT T_SMALL_STRING := C_FORMAT_ASCII;
/**
* ----------------------------------------------------------------------
* Containers
* ----------------------------------------------------------------------
*/
-- Records
TYPE R_TABLE_COLUMN IS RECORD (
DATA_TYPE T_SMALL_STRING,
DATA_LENGTH T_SMALL_INTEGER,
DATA_PRECISION T_SMALL_INTEGER,
DATA_SCALE T_SMALL_INTEGER,
NULLABLE T_DB_BOOLEAN,
DATA_DEFAULT T_LONG_STRING
);
-- Containers
TYPE LST_TABLE_COLUMNS IS TABLE OF R_TABLE_COLUMN INDEX BY T_BINARY_INTEGER;
/**
* ----------------------------------------------------------------------
* Basic functions
* ----------------------------------------------------------------------
*/
PROCEDURE prn(string_in IN T_MAX_STRING);
/**
* ----------------------------------------------------------------------
* All objects
* ----------------------------------------------------------------------
*/
FUNCTION desc_table(table_name_in IN T_SMALL_STRING) RETURN T_MAX_STRING;
FUNCTION desc_table(owner_in IN T_SMALL_STRING
,table_name_in IN T_SMALL_STRING) RETURN T_MAX_STRING;
FUNCTION desc_table(owner_in IN T_SMALL_STRING
,table_name_in IN T_SMALL_STRING
,output_format_in IN T_SMALL_STRING) RETURN T_MAX_STRING;
END UTL$DESC;
/