查找sql anywhere中是否存在本地临时表并使用它
我想在SQLAnywhere中编写一个过程,它可以检查本地临时表是否存在以及是否使用它。我不想丢掉桌子。我已经找到了删除本地临时表的方法,它是:查找sql anywhere中是否存在本地临时表并使用它,sql,sybase,sqlanywhere,Sql,Sybase,Sqlanywhere,我想在SQLAnywhere中编写一个过程,它可以检查本地临时表是否存在以及是否使用它。我不想丢掉桌子。我已经找到了删除本地临时表的方法,它是: DROP TABLE IF EXISTS t; 我也尝试过以下方法: 我创建了一个本地临时表TEMP_table。然后我尝试运行此查询: select object_id('tempdb..TEMP_TABLE') 这只是给我零。但是如果我尝试 select * from TEMP_TABLE 它工作得非常好 任何人都可以帮我找到一种方法来检查本
DROP TABLE IF EXISTS t;
我也尝试过以下方法:
我创建了一个本地临时表TEMP_table。然后我尝试运行此查询:
select object_id('tempdb..TEMP_TABLE')
这只是给我零。但是如果我尝试
select * from TEMP_TABLE
它工作得非常好
任何人都可以帮我找到一种方法来检查本地临时表是否存在于sql anywhere中 在一个查询中引用数据库,在另一个查询中不引用数据库,请尝试下面两个查询
select object_id('tempdb..TEMP_TABLE')
select * from tempdb..TEMP_TABLE
select object_id('TEMP_TABLE')
select * from TEMP_TABLE
我不确定您使用的Sybase版本是什么,但这在Sybase 11中起作用,因此我可以想象它在任何版本中也会起作用:
Begin
Create local Temporary table TEMP_TABLE (column1 int); //Create temp table
// any other code needed to be executed if table did not exist
Exception when others then
// Code to be executed when table does exist
end;
这基本上是sybase的一次尝试。如果临时表存在,它将抛出一个异常,在异常中,您可以运行希望知道该表已经存在的代码。您使用的是什么版本的Sybase?有疑问的是,它不是说SAP SQL,而是说SQL。我的查询将与Microsoft SQL Server配合使用。OP确实声明了“SQL Anywhere”,但小写字母“a”除外。查找本地临时表是否存在于SQL Anywhere中,并使用它和SQL Anywhere,问题中的sql anywhere听起来更像是询问如何访问sql中任意位置的临时表。更令人困惑的是,我们在sql和tempdb中有object_id。我们还使用双点引用数据库,如tempdb..Temp_表。问题中提到的两个查询都可以在tempdb和其他数据库中的任意位置使用SQL。我认为很明显,他不是在寻找与MS SQL Server兼容的东西。只是出于好奇,你知道为什么tempdb语法在SQL anywhere中不起作用吗?我正在使用sql anywhere 16。我不知道为什么。说实话有点奇怪。如果它是在同一个事务中执行的,那么它是有效的,但是如果您正在寻找一个已经存在的临时表,那么它似乎不喜欢它,但我不确定为什么。