从下面的变量声明的代码,它看起来像你想创建一个表变量。你的声明是一个字符串变量,而不是一个表变量。你应该声明看起来更像这个(就像创建一个实际的表):
DECLARE @PersonTable TABLE (PersonColumn varchar(255));
INSERT @PersonTable (PersonColumn)
VALUES ('PersonColumnValue');
表变量只有在您创建它的会话中存在。它没有被分配一个object_id,所以你不能检查它的存在。要么你创造了它,要么你没有创造它。
另外,因为它只是一个变量而不是实际的表格,所以不能丢弃它。但是你不需要,因为当它创建的会话结束时,它将不再存在。
如果你想进入临时表与表变量的比较细致的地方,可以给自己一个啤酒的例子,谷歌的“SQL表变量与临时表”,然后在晚上安顿下来。
潜在的可怕的谷歌翻译版本在德国:
澳元DEM代码,DER Ihrer Variablendeklaration folgt,scheint ES,ALS OB SIE EINE Tabellenvariable ERSTELLENmöchten。 Ihre Deklaration istfüreine String-Variable,keine Tabellenvariable。 IhreErklärungsollte mehr so aussehen(fast wie einetatsächlicheTabelle erstellen):
DECLARE @PersonTable TABLE(PersonColumn varchar(255)); INSERT @PersonTable(PersonColumn) WERTE('PersonColumnValue');
Die Tabellenvariable existiert nur innerhalb der Sitzung,in der Sie sie erstellt haben。 Es wird keine object_id zugewiesen,所以大家都希望能够成为这样的对象。 Entweder hast du es erschaffen oder nicht。
这是一个可变的和不受限制的表格,可以在表格中选择。 Aber Siemüssenes nicht,denn es wird wiederaufhörenzu existieren,wenn die Sitzung,in der es erstellt wurde,endet。
德恩SIE在芯片feineren Punkte冯temporärenTabellen奥德Tabellenvariablen gelangenmöchten,holen SIE SICH einen秋季冯比尔,谷歌的 “T SQL Tabelle可变VS温度Tabelle”,UND SICH献给巢穴阿本德einzuleben。
您将'@ Person'声明为数据类型为'VARCHAR(255)'的变量,那么为什么要尝试执行'DROP TABLE @ Person'? – Lamak
变量不能用这种方式。整个陈述必须是动态的,不仅仅是表名。这似乎只是SQL-SERVER。请删除mySQL标记。 – xQbert