今回OracleのデーターベースにはC言語でアクセスするということで、

Pro*Cを使ってSQL文をCに埋め込むということなのですが今例文なんかを探しています。

なにかいいホームページがあれば教えていただけないでしょうか?

またいいPro*Cについての参考書もあればぜひ教えてください。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Pro*C の製品にサンプルコードがついているはずなので、サンプルとしては


それが一番良いと思います。

後、検索サイトで探してみると幾つかヒットしますね。参考URLにふたつほど
載せておきますが、これは google で

"Pro*C" サンプル

をキーワードにして検索をかけてみた結果です。

# 自分で使ったことはないので、あまり自信はありません

参考URL:http://www.eva.hi-ho.ne.jp/shinnai/Oracle7/ProCc …
    • good
    • 0
この回答へのお礼

ありがとうございました。
早速見させていただきました。とても参考になりました。
またなにかありましたら、よろしくお願いします。

お礼日時:2001/07/02 15:08

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

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QPro*C桁うめについて

NUMBER(10,5) -- (aとする)と定義しているカラムをもつレコードに対して、
Pro*Cより追加、更新する場合に小数部を右0埋めしたく、
lpad(TABLENAME, a, '5', '0')というように処理しようとしたのですが、
ホスト変数aに値が設定されていない場合はnullのまま追加、更新しなければ
ならなくなり方法に困っています。
何か良い方法がありましたらお願いします。(oracle8i)

Aベストアンサー

#3 です。

う~ん、説明が悪かったようです。すいません。
小数点以下の右0埋めはやらなくても良いという事なんですけど・・・

>NUMBER型は0埋め値をみないのですか?

お手元にORACLEのマニュアルはありますでしょうか?
「Oracle8 Server 概要」のマニュアルに「NUMBERデータ型」の項目に
「内部数値形式」がありOracle上での数値格納方法が記述されています。

そこに「Oracleは先行ゼロと後続ゼロを格納しません」との記述があります。
従って[0.55]や[.55]や[0.55000]や[000.55000]でも結果として格納される
ものは同じと言うことになります。

もしテストできるのであればsqlplusで以下のsqlを実行してみてください。

1.UPDATE TABLENAME SET a = TO_NUMBER('.55');
2.UPDATE TABLENAME SET a = TO_NUMBER('0.55');
3.UPDATE TABLENAME SET a = TO_NUMBER('.55000');
4.UPDATE TABLENAME SET a = TO_NUMBER('0.55000');

結果として全て同じになると思います。

>また、0.55というデータをselectすると.55と取得するのはなぜでしょうか?

正確な解答ではないのですが、整数部の[0]が表示されない事での不具合は
ないと個人的には思いますが如何ですか?
これまた個人的にPro*C 内でSELECTする時にOracleがNUMBER型であればホスト
変数はint型やdouble型など数値型で受け取るの気がします。
その場合に整数部の[0]って意識しないような気がしますが、どうなんですか?
sqlplusであれば[COLUMN]コマンドで表示する形式も指定できますし・・・
ここは少しグレーです・・・

ではでは・・・

#3 です。

う~ん、説明が悪かったようです。すいません。
小数点以下の右0埋めはやらなくても良いという事なんですけど・・・

>NUMBER型は0埋め値をみないのですか?

お手元にORACLEのマニュアルはありますでしょうか?
「Oracle8 Server 概要」のマニュアルに「NUMBERデータ型」の項目に
「内部数値形式」がありOracle上での数値格納方法が記述されています。

そこに「Oracleは先行ゼロと後続ゼロを格納しません」との記述があります。
従って[0.55]や[.55]や[0.55000]や[000.55000]でも結果...続きを読む

QPro*Cのリンクエラーがどうにもならないですっ!!

こんにちわ。
UNIXのC++でPro*Cを使って動的SQLを使ったプログラムを作っています。
プログラムコードは出来上がっていて、単独コンパイルは通るのですが、
実行形式のプログラムを作る時のリンクで「未定義のシンボル」として
以下の4ライブラリ関数がエラーになります。

sqlald()関数、sqlprc()関数、sqlnul()関数、sqlclu()関数

これはおそらく、リンクする際にこれらの関数が含まれているライブラリを
リンクできていないだけなのではないかと思っているのですが、
肝心のライブラリがどこのどれなのかがわかりません。
どなたかご存知の方がいらっしゃいましたら、教えてください。

もしかして、プログラム中でもこれらの関数をextern する以外に
何か必要なのでしょうか?

PS.教えてgooのプログラミング→C/C++のカテゴリにも質問させていただいて  います。
  でもわからないので、誰か助けて~!!という感じです!!

Aベストアンサー

Pro*C プリコンパイラ・プログラマーズ・ガイド は読まれましたか?
もし、読まれていないのであれば、まずは読まれてはいかがでしょうか?

QPro*で副問い合わせができない

こんにちは、現在Oracle9 Pro*C
を使った開発をしているのですが、下記のSQLで
副問い合わせをしているのですが、コンパイルエラーが
出てしまいます。エラー内容は
「PCC-S-02201, 記号"SEISAN_YMD"が見つかりました。」
と表示されます。SQLPlus上では問題なく検索
されるのですが、C上だとうまくいきません。
なにか足りないのでしょうか?


EXEC SQL DECLARE cur4 CURSOR FOR
SELECT DISTINCT
b.KEIKAKU_SAKUTEI_KBN,
a.SEISAN_YMD,
(SELECT SEISAN_YMD FROM VIWDKJSEIS )
from VIWDKJSEIS a, TBLDKJSTNR b,TBLDKJSIRB c
where
b.KEIKAKU_SAKUTEI_KBN = c.KEIKAKU_SAKUTEI_KBN AND
a.SEISAN_YMD = b.SAGYO_YMDAND
b.SAGYO_YMD = c.SAGYO_YMD AND
TO_CHAR(a.SEISAN_YMD,'YYYY/DD') = :db_senko_taisyo_ym_m;

こんにちは、現在Oracle9 Pro*C
を使った開発をしているのですが、下記のSQLで
副問い合わせをしているのですが、コンパイルエラーが
出てしまいます。エラー内容は
「PCC-S-02201, 記号"SEISAN_YMD"が見つかりました。」
と表示されます。SQLPlus上では問題なく検索
されるのですが、C上だとうまくいきません。
なにか足りないのでしょうか?


EXEC SQL DECLARE cur4 CURSOR FOR
SELECT DISTINCT
b.KEIKAKU_SAKUTEI_KBN,
a.SEISAN_YMD,
(SELECT SEISAN_YMD FROM VIWDKJSE...続きを読む

Aベストアンサー

すみません、やりたいことの意味がよくわからないので質問させてください。
(SELECT SEISAN_YMD FROM VIWDKJSEIS )
の部分は1行しか返ってこないデータなんですよね?
複数返ってくるとエラーになりますよね。
FROM 句は VIWDKJSEIS a となってますから、副問い合わせが返す値と a.SEISAN_YMD は同じですよね?
SELECT 句に a.SEISAN_YMD があるのに、どうしてわざわざ副問い合わせを使用して
(SELECT SEISAN_YMD FROM VIWDKJSEIS )
としなければならないのかがわかりません。
質問を書き込むときにどこか間違えたりしてませんか?

QOracle SQL*Plus Dateタイプのinsertでエラー

date タイプを含むデータをinsert するとエラーが出ます。
たとえば、
CREATE TABLE plsql101_purchase (
product_name VARCHAR2(25),
product_price NUMBER(4,2),
purchase_date DATE
)
;
で表を作り、

INSERT INTO plsql101_purchase VALUES
('Product Name 1', 1, '5-NOV-00');
を実行すると、
”ORA-01858: 数値を指定する箇所に文字が指定されています”
というエラーが'5-NOV-00'の下に星マークが出て表示されます。

自分のマシンに大学から渡された生徒用のOracle8iをWindows2000にインストールして教本に載っていた上のような文を実行したところ、エラーが発生しました。大学のマシンでは、うまくいきました。

何か設定するんだと思いますが、その方法がまったく分かりません。どうしたらエラーをなくすことができるでしょうか?

date タイプを含むデータをinsert するとエラーが出ます。
たとえば、
CREATE TABLE plsql101_purchase (
product_name VARCHAR2(25),
product_price NUMBER(4,2),
purchase_date DATE
)
;
で表を作り、

INSERT INTO plsql101_purchase VALUES
('Product Name 1', 1, '5-NOV-00');
を実行すると、
”ORA-01858: 数値を指定する箇所に文字が指定されています”
というエラーが'5-NOV-00'の下に星マークが出て表示されます。

自分のマシンに大学から渡された生徒用のO...続きを読む

Aベストアンサー

Fireworksさん こんちは

ご自宅のORACLEの NLS_DATE_FORMAT はどうなっていますか?
初期化パラメタに設定されているはずですので確認してみてください。
'5-NOV-00'での形式での日付データを挿入できないのであれば、なにか別の形式になっている可能性があります。

「初期化ファイルの修正後ORACLE再起動」か、
SQL*Plusより、
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY';
で変更できると思います。

Qoracle sql*plusでの画面折り返し設定について

ちょっと困っている事があります。
SQL*plusで折り返し表示されて実行結果が見にくいです。
全画面表示させたら結構幅には余裕があるので、どうにか
表示させるための設定とかありませんでしょうか?
どうかよろしくおねがいします。

Aベストアンサー

SET というコマンドを使ってみてください。

SET LINESIZE 80

が デフォルトなので

SET LINESIZE 120

とかしてみたらいいでしょう。

参考URL:http://www.cypress.ne.jp/iceprobe/oraoraplus/plus_command_set.html


人気Q&Aランキング

おすすめ情報