简体   繁体   English

SQL-如何使用变量对?

[英]SQL - how can i use variable right?

I have some issues with using SQL variable in sql, i don't know clearly how i can use them properly, when i use this code : 我在sql中使用SQL变量时遇到一些问题,当我使用此代码时,我不清楚如何正确使用它们:

DECLARE @Person VARCHAR(255)
SET @Person = 'Person'

print '----------------------------------------------------------------------------------------------------'

if object_id('@Person', 'U') is not null 
begin
  print '    Tabelle @Person wird entfernt';
  drop table @Person;
end;
GO

it is showing me the below error : 它向我显示以下错误:

Incorrect syntax near '@Person'. “ @Person”附近的语法不正确。

Please help me writing the correct above sql statements with the variable. 请帮我用变量编写上面正确的sql语句。

You can try this, this is only for sql server : 您可以尝试一下,这仅适用于sql server:

DECLARE @Person VARCHAR(255)
SET @Person = 'Person'

print '----------------------------------------------------------------------------------------------------'

if object_id(@Person, 'U') is not null 
begin
  print '    Tabelle ' + @Person + ' wird entfernt'
  execute('drop table ' + @Person)
end
GO

From the code that follows your variable declaration, it looks like you're trying to create a table variable. 从变量声明后的代码中,您似乎正在尝试创建表变量。 Your declaration is for a string variable, not a table variable. 您的声明是针对字符串变量,而不是表变量。 Your declaration should look more like this (almost like creating an actual table): 您的声明应该看起来像这样(几乎就像创建一个实际表一样):

DECLARE @PersonTable TABLE (PersonColumn varchar(255));
INSERT @PersonTable (PersonColumn) 
VALUES ('PersonColumnValue');

The table variable only exists within the session where you created it. 该表变量仅存在于创建它的会话中。 It isn't assigned an object_id, so you can't check for it's existence. 没有为其分配object_id,因此您无法检查其是否存在。 Either you created it or you didn't. 您创建了它还是没有创建它。

Also, because it's just a variable and not an actual table, you can't DROP it. 另外,由于它只是一个变量,而不是实际的表,因此您无法删除它。 But you don't need to, because, again, it will cease to exist when the session where it was created ends. 但是您不需要这样做,因为它在创建会话结束时将不再存在。

If you want to get into the finer points of temporary tables vs. table variables, get yourself a case of beer, Google "t sql table variable vs temp table", and settle in for the evening. 如果您想了解临时表与表变量的精妙之处,请尝试一下啤酒,Google“ t sql表变量与临时表”,然后在傍晚安顿下来。

Potentially horrible Google Translate version in German: 潜在的德语Google Translate版本:

Aus dem Code, der Ihrer Variablendeklaration folgt, scheint es, als ob Sie eine Tabellenvariable erstellen möchten. Aus dem Code,der Ihrer Variablendeklaration,scheint es,als ob Sie eine Tabellenvariable erstellenmöchten。 Ihre Deklaration ist für eine String-Variable, keine Tabellenvariable. Ihre Deklaration istfüreine String-Variable,keine Tabellenvariable。 Ihre Erklärung sollte mehr so aussehen (fast wie eine tatsächliche Tabelle erstellen): IhreErklärung催眠了我的澳大利亚人(fast wie einetatsächlicheTabelle erstellen):

DECLARE @PersonTable TABLE (PersonColumn varchar (255)); 宣告@PersonTable TABLE(PersonColumn varchar(255)); INSERT @PersonTable (PersonColumn) WERTE ('PersonColumnValue'); INSERT @PersonTable(PersonColumn)WERTE('PersonColumnValue');

Die Tabellenvariable existiert nur innerhalb der Sitzung, in der Sie sie erstellt haben. 在Sie sie erstellt haben的Ditz Tabellenvariable existiert nur innerhalb der Sitzung。 Es wird keine object_id zugewiesen, so dass Sie nicht nach ihrer Existenz suchen können. Es wird keine object_id zugewiesen,所以dass Sie nicht nach ihrer Existenz suchenkönnen。 Entweder hast du es erschaffen oder nicht. 拥有完整的信息。

Da es sich dabei nur um eine Variable und nicht um eine tatsächliche Tabelle handelt, können Sie diese nicht löschen. Daes sich dabei nur um eine Variable and nicht um tstschichche Tabelle handelt,könnenSie diese nichtlöschen。 Aber Sie müssen es nicht, denn es wird wieder aufhören zu existieren, wenn die Sitzung, in der es erstellt wurde, endet. 恩斯特·德·埃斯特尔·乌尔德的Aber SieMüssenes nicht,Den es wird wiederaufhörenzu existieren,Went die Sitzung。

Wenn Sie in die feineren Punkte von temporären Tabellen oder Tabellenvariablen gelangen möchten, holen Sie sich einen Fall von Bier, Google "t SQL Tabelle Variable vs temp Tabelle", und sich für den Abend einzuleben. 温西·西恩(Wenn Sie)饰演了普伦特·冯·汤普森(Punkte vontemporären)/塔贝伦·德贝尔(Tabellenvariablen Gelangenmöchten),西恩·西希·艾因·法尔·冯·比尔,Google“ t SQL Tabelle Variable vs temp Tabelle”,以及阿希·德·阿本德·埃因祖莱本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM