我们正在将 foxpro 数据库重写为 SQL。我遇到了以下情况。 Foxpro 可以在两个不同的 if
语句下创建两个同名的游标。
我试图在 SQL 中做同样的事情。创建了两个临时表。如下所示:
IF @id = 1
BEGIN
SELECT * INTO #abc from table1
END
IF @id = 2
BEGIN
SELECT * INTO #abc frm table2
END
NEXT 在这里我写了一个代码来用另一个列更新一个临时表列的值。但是 sql 向我抛出一个错误,指出“数据库中已经有一个名为#abc 的对象”。
请问有解决办法吗?
谢谢。
最佳答案
对于您的特定用例,假设两者具有您可以使用的相同结构。
IF @id IN ( 1, 2 )
BEGIN
SELECT *
INTO #abc
FROM table1
WHERE @id = 1
UNION ALL
SELECT *
FROM table2
WHERE @id = 2
END
避免您遇到的解析器问题。我同意 Ben 的评论,尽管 FoxPro 代码的字面翻译可能会使您陷入低效且无法维护的困惑局面。
关于sql - SQL 中两个具有相同名称的临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089085/