我想编写一个SQL IF语句来检查是否存在本地临时表,但这些类型的表不记录在SQL Anywhere系统目录中。如何检查SQL Anywhere中是否存在临时表?
3
A
回答
1
只是尝试反正砸而忽略了错误...
BEGIN
DROP TABLE表;
例外当然其他
END;
3
如果您提出这样的问题,“如果在不存在错误的情况下抛出一个本地临时表,该如何抛出错误?”那么答案很简单:刚落,而忽略任何错误:
BEGIN
DROP TABLE t;
EXCEPTION WHEN OTHERS THEN
END;
如果你真的需要知道问题的答案“是否表t存在吗?”您可以查询表并分析生成的SQLSTATE。下面的函数使得一些功能的使用:
ON EXCEPTION RESUME忽略由SELECT引发的任何异常并把控制权交给IF语句。
EXECUTE IMMEDIATE允许您在表名称位于字符串变量中的情况下编写查询。
TOP 1确保即使表中包含一百万行,也只会选择一行。
ORDER BY 1允许您满足只有在订购结果集时才能使用TOP的要求。
SELECT 1免除了指定列名称的负担。
INTO @dummy表示SELECT(因此EXECUTE IMMEDIATE)不返回结果集。
如果SELECT工作,它要么将SQLSTATE设置为'00000'成功或'02000'找不到行。任何其他的SQLSTATE都意味着表中存在一些严重的问题...就像它不存在一样。
CREATE FUNCTION f_table_is_ok
(IN @table_name VARCHAR (128))
RETURNS INTEGER
ON EXCEPTION RESUME
BEGIN
DECLARE @dummy INTEGER;
EXECUTE IMMEDIATE STRING (
'SELECT TOP 1 1 INTO @dummy FROM ',
@table_name,
' ORDER BY 1');
IF SQLSTATE IN ('00000', '02000') THEN
RETURN 1
ELSE
RETURN 0
END IF;
END;
下面是一些测试代码:
BEGIN
DECLARE LOCAL TEMPORARY TABLE tt (c INTEGER);
DECLARE LOCAL TEMPORARY TABLE "t t" (c INTEGER);
SELECT f_table_is_ok ('asdf');
SELECT f_table_is_ok ('tt');
SELECT f_table_is_ok ('"t t"');
SELECT f_table_is_ok ('"SYS"."SYSTABLE"');
END;
5
注意,您可以在11.0.1做到这一点,更高:
DROP TABLE IF EXISTS t;
相关问题
- 1. 检查临时表是否存在
- 2. 检查是否存在临时表
- 3. 如何检查数据库中是否存在临时表
- 4. 检查临时表中是否存在列总是在SQL Server中返回false
- 5. SQL Server,无法检查是否存在临时表,存在if语句
- 6. 检查python中是否存在sql表
- 7. 如何检查SQL Server中是否存在表的列表?
- 8. Openquery SQL如何检查是否存在?
- 9. 检查SQL表是否存在
- 10. 检查表是否存在SQL
- 11. Microsoft SQL Server 2005检查临时表是否空
- 12. SQL案例当声明检查字段是否在临时表中时
- 13. 如何检查表是否存在
- 14. 如何检查DynamoDB表是否存在?
- 15. 检查SQL中是否存在子集
- 16. 检查表是否存在
- 17. 检查表是否存在
- 18. 如何检查SQL Azure中是否存在存储过程?
- 19. VBA-获取字段名称并检查它们是否存在临时表中
- 20. 我如何检查表是否存在SQL Server CE 3.5
- 21. 检查表中是否存在表
- 22. sql:检查表A中是否存在表B中的条目
- 23. 如何检查Sql Server 2008中的表是否存在于列表中?
- 24. 检查excel中是否存在表格
- 25. 检查列表中是否存在
- 26. 如何检查SQL Server中是否存在列?
- 27. 如何检查Sql服务器中是否存在约束?
- 28. 如何检查用户是否存在于SQL数据库中
- 29. 如何在SQL中转储临时表
- 30. Azure/Powershell:检查SQL Server是否存在