1

最近、手続き型コードを SQL に変換する作業に興味を持っています。完全な手続き型言語ですべてを表現できるわけではないことはわかっています。

しかし、特別な目的の手続き型言語がある場合はどうなるでしょうか? たとえば、次のように変換します。

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

これに:

select TableRID from Table where FirstName='Foo'

このようなものに名前はありますか?

また、私の疑似コードでは、それは不変であり、ANSI SQL への (簡単な) 変換が明らかにないrowようなことを行うことは不可能であると想定しています。Table[0].FirstName...

誰かこれに名前をつけてくれませんか?

4

1 に答える 1

0

すべてがチューリング完全な手続き型言語で表現可能です。ただし、常に表現力豊かであるとは限りません。場合によっては、解決したい問題の種類に応じて、パワーを取り除いたり、ドメイン固有言語( DSL ) を作成したりすることで、表現力を高めることができます。多分これはあなたが探している用語ですか?

拡張機能のない SQL はチューリング完全ではないため、お気づきのように、チューリング完全言語の可能なプログラムのサブセットのみを変換できます。

于 2010-07-30T05:26:47.263 に答える