sql,pl / sql和sqlj之间的区别

时间:2010-04-28 06:57:53

标签: sql plsql sqlj

我想知道

  • 3如何与1比较 另一?
  • 使用哪一个?
  • 可以替代 其他

3 个答案:

答案 0 :(得分:4)

  • SQL - 用于查询关系数据库的语言的通用名称。 这受各种ANSI标准的约束,但我知道没有实际完全符合最新标准的实际RDBS。有几个实现了大部分ANSI SQL-92,它们可以被视为SQL实现的最低标准。
  • PL / SQL - SQL的Oracle特定扩展,用于编写“STORED PROCEDURES”和“TRIGGERS”,它有效地编写了一种可以本机使用Oracles SQL的脚本语言。在SQLServer中,TSQL提供了类似的功能。
  • SQLJ - Java标准的一部分,一种(很少使用)功能,它允许SQL与Java代码内联编码,并在编译时检查SQL语法。与JDBC比较,JDBC是一个允许Java程序在运行时调用SQL的标准Java API。

因此SQL允许基本查询和更新表,如“SELEC * FROM MY.TABNAME”,PL / SQL允许对数据库运行更多智能脚本,如“IF DAY = 01 THEN(INSERT(TOTALS)”价值(%VAL)进入TOTTAB)ELSE(更新TOTTAB SET TOTALS = TOTALS +%VAL“)

答案 1 :(得分:3)

关于你的问题“什么时候使用”。一些Oracle专家建议:

  1. 首先尝试使用纯SQL解决您的问题
  2. 如果你不能用sql做,那就试试PL / SQL
  3. 如果您无法在内部执行此操作,请仅在数据库外部使用Java等其他语言。
  4. 但是,当然您可以将数据库视为数据的转储存储,并在单独的层中外部执行所有业务逻辑。

答案 2 :(得分:1)

如果需要真正满足SQL需求,那么我首先尝试在SQL中实现它。可能存在一些特定情况,PL / SQL过程调用(可能是明智地使用批量绑定和批量提取)可能比纯SQL解决方案更快/导致更少的资源争用/等等,但这在我的经验中很少见。 / p>

我试图区分“数据库逻辑”和“应用程序逻辑”,虽然我承认它有时会模糊,但我很努力避免在PL / SQL中编写应用程序逻辑。原因很简单,它远没有Java那么富有表现力,并且除了SQL交互之外几乎所有的东西都有更弱的API。

我个人不使用SQLJ,所以我无法帮助你,抱歉。