SQL - 我怎样才能使用变量?

时间:2017-10-19 14:24:01

标签: sql sql-server tsql

我在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

它显示以下错误:

  

' @ Person'

附近的语法不正确

请帮我用变量编写正确的上述sql语句。

2 个答案:

答案 0 :(得分:2)

你可以试试这个,这只适用于sql server:

<script>
  var url='@(Url.Action("OnPostList","ControllerName"))';
  var firstName= $("#txtFirstName").val();
  var lastName= $("#txtLastName").val();
  var isActive= $("#ddActive").val();
  $.post(Url,{FirstName:firstName,LastName=lastName,IsActive=isActive},function(data){
      var d = data.d;
      var tblBody = $("#tblUsers > tbody");
      tblBody.empty();
      $.each(d, function (i, item) {
         var modifiedDate = new Date(parseInt(item.ModifiedDate.substr(6)));
         var $tr = $('<tr>').append(
         $('<td>').html("<a href='javascript:void(0)' onclick='fnDialogShow(" + item.UserID + ")'>Edit</a>"),
         $('<td>').text(item.FirstName),
         $('<td>').text(item.LastName),
         $('<td>').text(item.IsActive ? "Yes" : "No")
         ).appendTo(tblBody);
       });
    });
</script>

答案 1 :(得分:1)

从变量声明后面的代码中,看起来你正在尝试创建一个表变量。您的声明是针对字符串变量,而不是表变量。你的声明应该更像这样(几乎就像创建一个实际的表):

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

表变量仅存在于您创建它的会话中。它没有分配object_id,因此您无法检查它是否存在。要么你创造了它,要么你没有创造它。

另外,因为它只是一个变量而不是一个实际的表,所以你不能DROP它。但是你不需要,因为,当它创建的会话结束时,它将不再存在。

如果你想进入临时表与表变量的精细点,那就给自己一个啤酒吧,Google“t table table variable vs temp table”,然后在晚上安顿下来。

德语中潜在的可怕谷歌翻译版本:

Aus dem Code,der Ihrer Variablendeklaration folgt,scheint es,als ob Sie eine Tabellenvariableerstellenmöchten。 Ihre DeklarationistfüreineString-Variable,keine Tabellenvariable。 IhreErklärung完成了mehr so asehen(fast wieeineatsächlicheTabelleerstellen):

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

Die Tabellenvariable existiert nur innerhalb der Sitzung,in Sie sie erstellt haben。 Es wird keine object_id zugewiesen,所以dass Sie nicht nach ihrer Existenzsuchenkönnen。 Entweder hast du esrschaffen oder nicht。

Da es sich dabei nur um eine Variable und nicht umeinetatsächlicheTabellehandelt,könnenSiediesenichtlöschen。 AberSiemüssenesnicht,denn es wirdwiederaufhörenzuarisieren,wenn die Sitzung,in der esrstellt wurde,endet。

Wenn Sie in die feineren PunktevontemporärenTabellenoder Tabellenvariablengelangenmöchten,holen Sie sich einen Fall von Bier,Google“t Tabelle Variable vs temp Tabelle”,andsichfürdenAbend einzuleben。