我创建了一个如下表:
create table #tab
(
id int
)
现在,我想获取表的对象 ID。
我在同一个会话上试过:
select object_id( "#tab" )
和
select object_id( "tempdb..#tab" )
但两者都返回null
。
我创建了一个如下表:
create table #tab
(
id int
)
现在,我想获取表的对象 ID。
我在同一个会话上试过:
select object_id( "#tab" )
和
select object_id( "tempdb..#tab" )
但两者都返回null
。
简短的回答......在智商上这是不可能的。长答案...您有一些相当不错的选择和一些不太好的选择。
用旧的 watcom SQL 重写整个过程,如果删除表的操作失败,则捕获错误...
使用永久表(据我所知,IQ 中的 2 之间没有有效区别)
变得时髦......并使用奇怪的智商行为!如果您在事务之外创建临时表,请检查@@trancount...您将得到 0 如您所愿。如果您随后打开一个事务...并检查@@trancount,您将得到 2。所以...考虑成功创建临时表 :)
假设它在您的连接中不存在:)
Sybase ASA SQL 代码列表: http ://manuals.sybase.com/onlinebooks/group-sas/awg0800e/dberen8/@Generic__BookTextView/334;pt=334#X
#1 的示例:
DROP PROCEDURE foo;
go
create procedure foo()
begin
DECLARE DROP_TABLE_FAILED EXCEPTION FOR SQLSTATE '42W33';
BEGIN
DROP TABLE T1;
EXCEPTION
WHEN DROP_TABLE_FAILED
THEN
WHEN OTHERS THEN RESIGNAL;
END;
CREATE LOCAL TEMPORARY TABLE t1 (c1 int)
on commit preserve rows;
insert into t1 select 1;
select * from t1;
END;
go
exec foo
go
exec foo
go
drop table t1;
go