Sql 在存储过程中嵌入html代码

Sql 在存储过程中嵌入html代码,sql,html,stored-procedures,Sql,Html,Stored Procedures,我们这里似乎有一些开发人员认为创建能够输出HTML或Javascript代码的存储过程是一件合法的事情。在我看来,这是对关注点分离模式的最终滥用。人们经常看到人们这样做吗?错得可怕!不过这只是我的意见 这是一个典型的新手错误 如果必须在SP输出中添加标记,那么至少应该使用自己的标准化编码,然后让应用程序将其处理为HTML/Javascript 比如说 "<javascriptpopup>[outputuotputoutput]</javascriptpopup>" “[

我们这里似乎有一些开发人员认为创建能够输出HTML或Javascript代码的存储过程是一件合法的事情。在我看来,这是对关注点分离模式的最终滥用。人们经常看到人们这样做吗?

错得可怕!不过这只是我的意见

这是一个典型的新手错误

如果必须在SP输出中添加标记,那么至少应该使用自己的标准化编码,然后让应用程序将其处理为HTML/Javascript

比如说

"<javascriptpopup>[outputuotputoutput]</javascriptpopup>"
“[outputuotput]”

“[outputuotput]”

真恶心。有几个问题:

  • 无法“剥皮”应用程序-移动到全新的演示文稿,如Flex、桌面表单等
  • 您会阻止图形设计师或UI专家在对他们有生产力的环境中工作
  • 如果混合使用HTML存储(一些在模板中,一些在db中,一些在应用程序代码中),跟踪UI问题绝对是糟糕的
  • 没有IDE DOM/布局验证
  • 如果不运行数据库,则无法预览或创建原型

这是对“低耦合、高内聚”原则的不言而喻的违反


我无法想象他们会如何建议将CSS格式应用于这样一个庞然大物。

如果随意这样做,可能违反了分层的关注点分离原则


另一方面,通过数据库信息快速编写存储过程来生成html在某些情况下是非常合法和高效的,特别是对于高度动态的软编码网站,即网站结构的一部分在数据库中编码,或者数据库本身包含html片段……

是的,我见过很多人这样做,不幸的是。不过你是对的:这太卑鄙了

通常,当两个相邻的层混合在一起时会出现层分离问题—您在数据库层中获得业务逻辑,或者在业务层中获得表示逻辑。但这完全跳过了一个层,使用户端的演示文稿与它所属的地方相距很远!注定是一个无法维持的恐怖


如果这些无赖不相信这些要求保持理智的请求,你可能会出于安全考虑抓住他们。存储过程中的数据库层功能不太可能知道如何将文本转义以输出为HTML或JS字符串文字,这极有可能导致脚本注入黑客攻击,从而导致XSS攻击。例如,如果一个用户称自己为“Brian von”,并将其粗略地连接到一个存储过程HTML结果中……

Utimate no-no。除了之前所有的问题,如安全性、低耦合和分层,当您的公司想要联合内容时会发生什么,将其提供给移动设备(wap等),在基于文本的电子邮件或打印等中使用。

我不认为问题在于关注点的分离,因为存储过程只是缺少正确实现这一点的工具

另外,任何其他遇到这段代码的人都会遇到问题,并且很难进行源代码控制、集成和单元测试


唯一的例外是,如果您的数据库实际存储了在其他地方编辑的Javascript或HTML,例如作为CMS的一部分。

我在一家商店里完成了一项工作,整个应用程序发出了所有HTML,幸好使用了对外部CSS/JS的引用

在项目开始时,Oracle不支持单独的web/应用程序服务器—一切都通过PL/SQL完成

有时候你只需要利用你所拥有的

话虽如此,我认为在任何现代DBs或应用程序体系结构中,都没有理由从存储过程生成视图级工件

"<prettyfont>[outputuotputoutput]</prettyfont>"