データベースに技術者を追加する SQL および C++ コードを書いています。実行する必要がある 3 つの SQL 挿入ステートメントがあります。私のコードにはそれが含まれていますが、私のコードは準拠していないか、求められていることを実行していません。問われるのはこちら。
プログラムはユーザーに ssn を要求する必要があります。
その ssn/employee がすでに Employee テーブルにある場合、プログラムはその従業員がすでに DB にあることをユーザーに通知し、その従業員の組合員番号を更新するかどうかをユーザーに尋ねます。ユーザーの答えが「はい」の場合、プログラムはユーザーに新しい組合メンバー番号を尋ね、DB でそれを更新する必要があります。
ssn/employee がまだ DB にない場合、プログラムはユーザーにその従業員の組合員番号を尋ね、そのレコードを Employee テーブルに保存する必要があります。従業員が技術者であると仮定すると、プログラムはその技術者に関する情報 (名前、住所、電話番号) を保存するようにユーザーに要求し、それを Technician テーブルに保存する必要があります。次に、プログラムは、技術者がエキスパートである飛行機のモデル番号をユーザーに尋ね、対応するレコードを Experts テーブルに追加する必要があります。
ここに私のコードがあります:
void add_technician() {
EXEC SQL BEGIN DECLARE SECTION;
char sn[9];
int s=0;
char answer;
int umn;
char tname[30];
char tadd[30];
char tpho[10];
char tmod[15];
EXEC SQL END DECLARE SECTION;
cout << "Enter social security number:";
cin >> sn;
EXEC SQL SELECT SSN into :s from Employee where SSN= :sn;
if (s == sn)
{
cout << "Employee already exists in the database.";
cout <<"Would you like to update the union-membership-number?";
cin >> answer;
if (answer == 'y'|| 'Y')
{cout <<"Enter new union member number:";
cin >> umn;
EXEC SQL
INSERT INTO Employee (ssn, union_member_no)
VALUES (:sn, :umn);
}
}
else {
cout << "Enter in union membership number of the new employee: ";
cin >> umn;
EXEC SQL INSERT INTO Employees (ssn, union_member_no)
VALUES (:sn, :umn);
EXEC SQL COMMIT WORK;
cout << "Enter the address of the technician.";
cin >> tadd;
cout << "Enter the name technician name.";
cin >> tname;
EXEC SQL INSERT INTO Technicians (address, name, phone)
VALUES (:tadd, :tname, :tpho);
EXEC SQL COMMIT WORK;
cout << "Enter airplane model number that you are an expert on." ;
cin >> tmod;
EXEC SQL INSERT INTO Experts (model_no, ssn)
VALUES (:tmod);
EXEC SQL COMMIT WORK; }
}
プログラムを実行すると、最初の 2 つの IF ステートメントがスキップされます。理由が分からないようです。