我需要每天动态创建一个表,列如下。
COLUMN1, COLUMN2, (SYSDATE AS) COLUMN3, (SYSDATE-1) COLUMN4, (SYSDATE-2) COLUMN5,..请提出可能的方法。
发布于 2015-09-02 19:02:06
是的,这是可以实现的,但是Curse and Blessing Dynamic SQL by Erland Sommarskog
创建表格@tbl
这里的目标是创建一个表,其名称在运行时确定。
如果我们只看一下反对在存储过程中使用动态SQL的论点,那么它们中几乎没有几个是真正适用于这里的。如果存储过程中包含静态CREATE TABLE,则运行该过程的用户必须具有创建表的权限,因此动态SQL不会更改任何内容。计划缓存显然与此无关。等。
然而:为什么?为什么要这样做?如果您在应用程序中动态创建表,那么您就错过了一些关于数据库设计的基础知识。在关系数据库中,表和列的集合应该是恒定的。它们可能会随着新版本的安装而改变,但在运行时不会改变。
有时,当人们这样做时,他们似乎想为临时表构造唯一的名称。这是完全不必要的,因为这是SQL Server中的内置功能。如果你说:
CREATE TABLE #nisse (a int NOT NULL)
然后,幕后的实际名称将变得更长,其他连接将无法看到这个#nisse实例。
如果您想创建一个对用户来说是唯一的永久表,但是您又不想保持连接,因此不能使用临时表,那么创建一个所有客户端都可以共享的表可能更好,但是其中第一列是客户端私有的键。在我的文章“如何在存储过程之间共享数据”中,我更详细地讨论了这种方法。
https://stackoverflow.com/questions/32351361
复制相似问题