将过程代码展开到SQL中

时间:2010-07-30 04:30:40

标签: sql procedural-programming ansi-sql turing-complete

我最近对将程序代码转换为SQL的行为感兴趣。我知道并非绝对一切都是用图灵完整的程序语言来表达的。

如果您有特殊用途的程序语言怎么办?例如转换这样的东西:

foreach(var row in Table){
  if(row.FirstName=="Foo"){
    yield new {row.TableRID};
  }
}

进入这个:

select TableRID from Table where FirstName='Foo'

这样的名字有名字吗?

另外,在我的伪代码中假设row是不可变的,并且不可能做Table[0].FirstName...之类的事情以及其他很明显没有(简单)转换成ANSI SQL的东西。

有人可以给我一个名字吗?

1 个答案:

答案 0 :(得分:0)

一切都可以用图灵完整的程序语言表达。但是,它并不总是富有表现力。有时,您可以通过消除权力,创建特定于域的语言 DSL 来获得表达力,以解决您想要解决的问题。也许这就是你要找的词?

没有扩展名的SQL不是图灵完备的,所以正如您所注意到的,只能转换图灵完备语言的可能程序的一部分。

相关问题