我在将数据库从Foxpro迁移到SQL时遇到了这种情况。
以下是示例场景..(我的原始代码有点复杂,所以只是尝试创建我自己的示例)
我在我的sql server函数中创建了几个表变量来获得我需要的东西。
DECLARE @temp_1 TABLE(ID INT,
Name NCHAR(7),
bday DATE,
m_status NVARCHAR(10));
INSERT INTO @temp_1
SELECT Name, bday, m_status from Employee_Info
DECLARE @temp_2 TABLE(ID INT,
City NCHAR(7),
Country NVARCHAR(10),
zip NVARCHAR(10));
INSERT INTO @temp_2
SELECT City, Country, zip from Employee_Address
接下来是我需要使用上表变量中的每个字段将数据导出到我的第三个表变量中的情况。
例如,
DECLARE @temp_full TABLE (
Name NCHAR(7),
City NCHAR(7));
INSERT INTO @temp_full
SELECT @temp_1.Name, @temp_2.City FROM @temp_1, @temp_2 WHERE @temp_1.ID = @temp_2.ID
[EDITED TO INCLUDE INSERT USING JOINS]
INSERT INTO @temp_full
SELECT @temp_1.Name, @temp_2.City FROM @temp_1 INNER JOIN @temp_2 ON @temp_1.ID = @temp_2.ID
但是,当我执行@ temp_1.Name,@ temp_2.City时,我收到错误消息,说我必须删除标量变量@ temp_1,@ temp_2。
任何人都可以告诉我如何解决这个问题。
感谢您的帮助。
答案 0 :(得分:2)
这不是foxpro,而@variable_tables不是foxpro中的游标,表中没有任何当前记录指针,表是记录集,你必须像使用集一样使用它。
如果您需要使用表@ temp_1和@ temp_2中的记录填充@temp_full,则必须使用select加入这两个表,如下所示:
INSERT INTO @temp_full
SELECT
temp_1.Name,
temp_2.City
FROM @temp_1 temp_1
JOIN @temp_2 temp_2 on temp_2.ID = temp_1.ID
另请注意,您必须使用变量表的别名