方法一:
SELECT REPLACE(STR,'|',CHR(13)||CHR(10)) FROM
(
(SELECT substr(MAX(SYS_CONNECT_BY_PATH(column_name,
'|' )),
2) AS STR
FROM (SELECT ROWNUM AS ROW_NUM, column_name
FROM (SELECT *
FROM (SELECT
'P_'||COLUMN_NAME||' '||TABLE_NAME||'.'||COLUMN_NAME||'%TYPE, --'||REPLACE(COMMENTS,chr(13),' ') AS COLUMN_NAME
FROM USER_COL_COMMENTS
WHERE TABLE_NAME ='OKFORM'
)
))
START WITH ROW_NUM = 1
CONNECT BY ROW_NUM = ROWNUM) )
这个就把OKFORM这个表的所有字段的定义都列出来了,如下:
P_FORMCLASSNAME OKFORM.FORMCLASSNAME%TYPE, --窗体类名
P_CAPTION OKFORM.CAPTION%TYPE, --标题
P_PARENT OKFORM.PARENT%TYPE, --父窗体类
P_FORM_TYPE OKFORM.FORM_TYPE%TYPE, --类型(0-不显示 1-显示)
P_FORM_ORDER OKFORM.FORM_ORDER%TYPE, --次序
P_SHORTCUT OKFORM.SHORTCUT%TYPE, --快捷键
为了便于使用,我把上面的sql封装成了一个函数:
-- 功能点:得到表变量参数
FUNCTION get_tab_cols_param
(
p_table_name VARCHAR2, --表名
p_prefix CHAR:= 'P', --变量或参数前缀
p_separator char:=',' --各个变量间的分隔符
) RETURN VARCHAR2 IS
v_value VARCHAR2(4000);
BEGIN
SELECT REPLACE(STR, '|', CHR(13) || CHR(10))
INTO v_value
FROM ((SELECT substr(MAX(SYS_CONNECT_BY_PATH(column_name, '|')), 2) AS STR
FROM (SELECT ROWNUM AS ROW_NUM, column_name
FROM (SELECT *
FROM (SELECT p_prefix|| '_' || COLUMN_NAME || ' ' ||
TABLE_NAME || '.' || COLUMN_NAME ||
'%TYPE'||p_separator||' --' ||
REPLACE(COMMENTS, chr(13), ' ') AS COLUMN_NAME
FROM USER_COL_COMMENTS
WHERE TABLE_NAME = p_table_name
)))
START WITH ROW_NUM = 1
CONNECT BY ROW_NUM = ROWNUM));
RETURN v_value;
END;
方法二:
CREATE OR REPLACE VIEW VW_TAB_COLS_PARAM
AS
SELECT TABLE_NAME, COLUMN_NAME || ' ' || TABLE_NAME || '.' || COLUMN_NAME ||'%TYPE'|| ',' ||' --' ||COMMENTS
AS PARAM
FROM USER_COL_COMMENTS
比如:
SELECT 'p_'||PARAM FROM VW_TAB_COLS_PARAM
WHERE TABLE_NAME='OKFORM'


档案
日志
相册
视频



评论
想第一时间抢沙发么?