Развертывание процедурного кода в SQL - PullRequest
1 голос
/ 30 июля 2010

Процесс преобразования процедурного кода в 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 голосов
/ 30 июля 2010

Все выражается на процедурном языке, полном по Тьюрингу.Хотя это не всегда выразительно.Иногда вы можете получить выразительность, удалив власть, создав предметно-ориентированный язык или DSL , для той проблемы, которую вы хотите решить.Может быть, это термин, который вы ищете?

SQL без расширений не является полным по Тьюрингу, так что, как вы заметили, может быть преобразовано только подмножество возможных программ на языке полного по Тьюрингу.

...