0

私はクライアントの名前と医師の名前を持っています。DBからIDを取得し、IDをテーブルに挿入したい。

CREATE PROCEDURE AddMedicalCard
@Client nchar,
@Doctor nchar
AS
BEGIN
    SELECT Clients.[ClientCode] AS [Code]
    Into #NewClientCode
    FROM Clients
    WHERE Clients.[ClientName]=@Client

    SELECT Personal.[DoctorCode] AS [Code]
    Into #NewDoctorCode
    FROM Personal
    WHERE Personal.[DoctorName]=@Doctor

    INSERT INTO MedicalCard 
        VALUES (#NewClientCode.[Code].First, #NewDoctorCode.[Code].First)

    DROP TABLE #NewClientCode
    DROP TABLE #NewDoctorCode
END
GO

エラー:

マルチパート識別子「#NewDoctorCode.Code.First」をバインドできませんでした。
マルチパート識別子「#NewClientCode.Code.First」をバインドできませんでした。列名または指定された値の数がテーブル定義と一致しません。

MedicalCard テーブルのデザイン:

RecordingCode(Key), ClientCode, DoctorCode 

およびその他の 5 つの null 許容列。

4

4 に答える 4

1

エラーメッセージがすべてを物語っています。なんてことはありません#NewDoctorCode.Code.First。あなたの仕事は、次のように簡単かつきれいに行うことができます。

注:同じ名前のクライアントとドクターが複数存在する可能性があるため、クライアントコードとドクターコードを名前で取得することはあまり正しくありません。

--declare two variables 
declare @clientCode varchar(50), @doctorCode varchar(50)

--assign clientCode
SELECT TOP 1   @clientCode = Clients.[ClientCode]
FROM Clients
WHERE Clients.[ClientName]=@Client

--assign doctorCode
SELECT TOP 1  @doctorCode = Personal.[DoctorCode]
FROM Personal
WHERE Personal.[DoctorName]=@Doctor

--finally insert them to MedicalCard table
INSERT INTO MedicalCard (clientCodeColumn,doctorCodeColumn) --Column Names
VALUES (@clientCode,@doctorCode)
于 2012-12-25T13:14:25.213 に答える
0

このようなことをしてください

DECLARE @i INT;
SELECT @i = id FROM youtable;
BEGIN
    Insert into tablename(column1) values(@i)
END
于 2012-12-25T13:14:12.763 に答える
0

これを試してください。テーブルではなく変数を使用する必要があります。テーブルを使用する場合は、使用する必要がありますinsert into table select col

DECLARE @NewClientCode int
DECLARE @NewDoctorCode int

SELECT @NewClientCode = Clients.[ClientCode]
FROM Clients
WHERE Clients.[ClientName]=@Client

SELECT @NewDoctorCode = Personal.[DoctorCode]
FROM Personal
WHERE Personal.[DoctorName]=@Doctor

INSERT INTO MedicalCard 
    VALUES (@NewClientCode, @NewDoctorCode)
于 2012-12-25T13:15:07.407 に答える
0

このSPを使用してみてください:

CREATE PROCEDURE AddMedicalCard
@Client nchar,
@Doctor nchar
AS
BEGIN




    INSERT INTO MedicalCard 
        VALUES (
                SELECT TOP 1 Clients.[ClientCode]
                FROM Clients
                WHERE Clients.[ClientName]=@Client,

                SELECT TOP 1 Personal.[DoctorCode]
               FROM Personal
               WHERE Personal.[DoctorName]=@Doctor
              )


END
GO
于 2012-12-25T13:16:46.160 に答える