html 支持3pg格式吗,从PostgreSQL函数生成HTML

撇开上面的其他答案,我修改了这个,因为我在上面列出的答案中发现了几个问题,其中包括:

连接不正确;别名无效(即n)

函数无法处理空值

函数应生成具有定义的HTML文档类型的整个HTML文档

注意:虽然必须在postgres中生成HTML文档并不理想,但有些情况下可能需要这样做。我发现自己在里面。除了上面列出的问题外,我还包括用于处理表上格式和css的引导。我希望这对其他人有帮助。

CREATE OR REPLACE FUNCTION genhtml (text, text, text, text[])

RETURNS text AS $body$

DECLARE

schemaname ALIAS FOR $1;

tablename ALIAS FOR $2;

tabletype ALIAS FOR $3;

columnnames ALIAS FOR $4;

result TEXT := '';

searchsql TEXT := '';

varmatch TEXT := '';

col RECORD;

html_doctype TEXT := '' || E'\n';

html_meta TEXT := '' || E'\n\t' || '' || E'\n';

html_link TEXT := '' || E'\n';

html_bscript TEXT := '' || E'\n';

html_jscript TEXT := '' || E'\n';

html_head TEXT := '' || E'\n' || '

' || E'\n\t' || html_meta || E'\t' || hmtml_link || E'\t' || html_jscript || E'\t' || html_bscript || '' || E'\n';

html_body TEXT := '

';

header TEXT;

BEGIN

header := E'\t'|| '

' || E'\n';

searchsql := $QUERY$SELECT ''$QUERY$;

FOR col IN select attname

FROM pg_attribute AS a

JOIN pg_class AS c ON a.attrelid = c.oid

JOIN pg_namespace AS n ON n.oid = c.relnamespace

WHERE c.relname = tablename

AND n.nspname = schemaname

AND c.relkind = tabletype

AND attnum > 0

AND attname = ANY(columnnames)

LOOP

header := header || E'\t\t' || '

' || col || '' || E'\n';

searchsql := searchsql || $QUERY$ || E'\n\n\t' || '

' || $QUERY$ || 'coalesce(' || col || ', ''N/A'')' || $QUERY$ || '' $QUERY$;

END LOOP;

header := header || E'\t' || '

' || E'\n';

searchsql := searchsql || ' FROM ' || schemaname || '.' || tablename;

result := html_doctype || html_head || html_body || E'\n\t' || '

result := result || header;

FOR varmatch IN EXECUTE (searchsql) LOOP

IF result > '' THEN

result := result || E'\t' || '

' || varmatch || E'\n\t' || || E'\n';

END IF;

END LOOP;

result := result || E'\t' ||

|| E'\n' || ' || E'\n' || '';

RETURN result;

END;

$body$

LANGUAGE 'plpgsql' VOLATILE;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值