我创建了一个表格如下:
create table #tab
(
id int
)
现在,我想得到表的对象ID。
我尝试了同一个会话:
select object_id( "#tab" )
和
select object_id( "tempdb..#tab" )
但两者都返回null
。
答案 0 :(得分:3)
简短回答......关于智商,这是不可能的。答案很长......你有一些相当不错的选择和一些不那么好的选择。
在旧的watcom SQL中重写整个过程,如果删除表的操作失败,则捕获错误...
使用永久表(据我所知,智商中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