Подмена TSQL ключевых слов и блоков кода - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть блоки TSQL, для которых я хочу создать MACRO, а затем повторно использовать в моем файле SQL. Я хочу, чтобы это было только во время компиляции.

Например:

?set? COMMON = "Field1 int, Field2 char(1),";
?set? MAKEONE = "create table";

MAKEONE XXX (
    COMMON
    Field3 int
);

Пожалуйста, не спрашивайте, почему я хотел бы ...:)

... это для SQL Server.

Хорошо, как насчет условного выполнения SQL:

?set? ISYES = true;

?if? ISYES 
create table AAA (...)
?else?
create table BBB (...)

1 Ответ

2 голосов
/ 26 сентября 2011

То, что вы спрашиваете, не имеет большого смысла в терминах SQL

Исходя из ваших примеров:

  1. CREATE TABLE - это именно CREATE TABLE.Почему Макрос это?Вы не собираетесь заменять «СОЗДАНИЕ ПРОЦЕДУРЫ».

  2. Наличие «общих» полей будет указывать на плохой дизайн

Вы также должны учитывать:

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

Теперь, какую бизнес-проблему вы пытаетесь решить?
Вместо того, чтобы спрашивать о выбранном вами решении ...

Редактировать: вопрособновлено, как я напечатал выше:

IF (a condition)
   EXEC ('CREATE TABLE ...')
ELSE IF (a condition)
   EXEC ('CREATE TABLE ...')
...

Обратите внимание, что большая часть DDL в SQL должна быть в своем собственном пакете или в первом операторе в пакете.Следовательно, использование динамического SQL снова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...