我目前正在尝试在SQL Server中运行一些查询。在查询中有一个像这样的部分:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item.IsInEditMode)
{
GridEditableItem editItem = (GridEditableItem)e.Item;
RadComboBox combo = (RadComboBox)editItem.FindControl("updateComboBox");
combo.DataBind();
combo.SelectedValue = DataBinder.Eval(editItem.DataItem,"ID").ToString();
}
}
问题是我不断收到一些错误,说...
IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects
WHERE id = object_id(N'tempdb.dbo.[##Emp]'))
DROP TABLE ##Emp
SELECT *
INTO ##Emp
FROM #Emp (nolock)
...
已经存在。当我用##Emp
检查它时,这件事怎么可能?我甚至尝试删除IF EXIST DROP
部分并手动删除表格,但它仍然表示该表已经存在。
答案 0 :(得分:0)
使用简单的
检查两者临时表状态select * from tempdb..sysobjects where name like '%Emp%'
然后为 :
处理删除和娱乐BEGIN TRANSACTION
...
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE id = object_id(N'tempdb..[#Emp]'))
DROP TABLE #Emp
CREATE TABLE #Emp(exampleId uniqueidentifier);
...
IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects WHERE id = object_id(N'tempdb.dbo.[##Emp]'))
DROP TABLE ##Emp
SELECT *
INTO ##Emp
FROM #Emp
...
COMMIT TRANSACTION
正如@ damien-the-unbeliever所指出的那样,全球可见的临时表可能非常麻烦,请仔细检查是否真的需要它。
在这种情况下,拥有这样相似的名字也很困惑......