0

DB を Foxpro から SQL に移行しているときに、この状況に遭遇しました。

以下はサンプルシナリオです.. (私の元のコードは少し複雑なので、独自の例を作成しようとしました)

必要なものを取得するために、SQL サーバー関数でいくつかのテーブル変数を作成しました。

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

次に、上記のテーブル変数のフィールドを 1 つずつ使用して、データを 3 番目のテーブル変数に導出する必要がある状況が発生します。

例えば、

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 を削除する必要があるというエラーが表示されます。

誰でもこの問題を解決する方法を教えてください。

ご協力ありがとうございました。

4

1 に答える 1

2

これは foxpro ではなく、@variable_tables は foxpro のようなカーソルではありません。テーブルの現在のレコード ポインターはありません。テーブルはレコードのセットであり、セットと同じように操作する必要があります。

テーブル @temp_1 と @temp_2 から結合されたレコードで @temp_full を埋める必要がある場合は、この 2 つのテーブルを次のように結合して 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

また、変数テーブルにはエイリアスを使用する必要があることに注意してください

于 2012-06-28T19:58:06.993 に答える