1

将过程代码转换为 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 的事情。

谁能给我这个名字?

4

1 回答 1

0

一切都可以用图灵完备的程序语言来表达。不过,它并不总是富有表现力。有时,您可以通过移除权力、创建特定领域的语言DSL来获得表达能力,以解决您想要解决的问题。也许这是您正在寻找的术语?

没有扩展的 SQL 不是图灵完备的,因此正如您所注意到的,只有图灵完备语言的可能程序的一个子集可以被转换。

于 2010-07-30T05:26:47.263 回答