TSQL替换关键字和代码块

时间:2011-09-26 04:05:49

标签: sql sql-server tsql dynamic-sql

我有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 个答案:

答案 0 :(得分:2)

你所问的内容在SQL术语中没什么意义

根据您的示例:

  1. CREATE TABLE就是这样的:一个CREATE TABLE。为什么宏呢?你不会用“创建程序”来代替。

  2. 拥有“常用”字段表示设计不佳

  3. 您还必须考虑:

    • 约束,键和索引
    • 使用动态SQL的权限
    • 开发“框架”以执行SQL已经执行的操作的成本
    • 对象的权限

    现在,您要解决的业务问题是什么? 而不是问你选择的解决方案......

    编辑:我在上面输入时更新了问题:

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

    请注意,SQL中的大部分DDL必须位于其自己的批处理中或批处理中的第一个语句中。因此再次使用动态SQL