アプリ版:「スタンプのみでお礼する」機能のリリースについて

----test.c-----------------
id="0001";

number = get_data(id);/* 関数の戻り値を取得したい */

if(strcmp(number, "01") == 0){
/* Aの処理へ */
}else{
/* Bの処理へ */
}

----test.pc----------------
int get_data(char* id){
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR tel_no[3];
VARCHAR id_no[5];
EXEC SQL END DECLARE SECTION;

strcpy(id_no.arr,id);
id_no.len=strlen(id_no.arr);

EXEC SQL
SELECT tel_number into :tel_no
FROM test_tbl
WHERE id=:id_no;

tel_no.arr[tel_no.len]='\0';

/*取得したtel_noを返したい!!*/
}
---------------------------
test.cで引数に"0001"を指定して、get_data関数を
コールして、そのget_data関数で受け取った引数で
test_tblを検索しtel_numberフィールドの値を
test.cに返し、判断文で処理したいと考えています。
ちなみにtest_tblで引数の条件で合致するデータは
必ず1件のみとします。

どのように記述したらいいかわかりません。
アドバイスお願い致します。m(_ _)m

A 回答 (1件)

こんにちわ。



get_data は文字列を返すのですね?
そうすると、tel_no.arr にNULL 文字をセットして
返す事になりますが、ここで注意があります。
上のソースだと、tel_no 変数はget_data 関数の
ローカル変数として宣言されますのでget_data から
復帰すると開放されてしまいます。
→ 別の場所でグローバル変数かstatic 変数を宣言して
  おいて、その変数にtel_no.arr をコピーする。
  (当然NULL 文字をセットして下さい。)
  return 文でtel_no.arr をコピーした変数の
  アドレスを返すようにする。
でOk です。
文字列を返すのであれば、復帰値ではなくOut パラメータ
にした方が楽だと思いますょ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!