谁能帮我这个?我有一个编写函数的任务,它将从PostgreSQL中的给定表名生成HTML表(plpgsql语言) . 我写过这个,但它远非我所需要的 . 它会为我给出的列生成一个表(目前只有一个),但我需要给表一个名称 .
创建或替换函数genhtml2(tablename text,columnname text)RETURNS text AS $ BODY $ DECLARE result text:=''; searchsql text:=''; var_match text:=''; BEGIN searchsql:='SELECT'|| columnname || 'FROM'|| tablename || '';结果:='<table>';
FOR var_match IN EXECUTE(searchsql)LOOP
如果结果>''那么
结果:=结果|| '<tr>'|| var_match || '</ TR>';
万一;
结束循环;
结果:=结果|| '</ TABLE>';
返回结果;结束; $ BODY $ LANGUAGE'plpgsql'IMMUTABLE;
4 回答
您可以先在calalogs中搜索表中的列,然后使用它们生成查询并设置表头 .
显然这会变得凌乱脆弱......
我非常有信心你不应该这样做,因为这是一个潜在的维护噩梦 . 最好的办法是将行结果返回到任何应用程序或其他层,并从那里向html工作 .
这是一个修改后的版本,它使用text []数组作为列名,用于多列 . 它还会打印新行和制表符以格式化输出 .
用以下方法调用函数:
'r'适用于普通表 . 如果您使用的是VIEW,请将其更改为“v” .
小猪退出上面的其他答案,我修改了这个,因为我在上面列出的答案中发现了几个问题,其中包括:
加入不正确;别名无效(即n)
该函数无法处理空值
函数应生成具有已定义的html文档类型的整个HTML文档
注意:虽然必须在postgres中生成HTML文档并不理想,但有些情况可能需要这样做 . 我发现自己在 . 除了上面列出的问题,我还包括用于处理格式化和桌面上的CSS的引导程序 . 我希望这对其他人有帮助 .