広告代理店のある顧客マネージャーは、1997 年に IBM のために作成したビデオ広告のうち 30 秒以内のものを探しています。
以下の図 は、これらのビデオにアクセスするための照会です。 この照会には、Filename と Duration という名前のビデオ・エクステンダー UDF が指定されていることに注意してください。
SELECT FILENAME(ADS_VIDEO) FROM ADS WHERE CLIENT='IBM' AND SHIP_DATE>='01/01/1997' AND DURATION(ADS_VIDEO) <=30 |
この照会によって、該当するビデオのファイル名が戻されます。 そうすると、顧客マネージャーは好きなビデオ・プレーヤーを開始して、それぞれのビデオ・ファイルの内容を再生することができます。
上の図 は、顧客マネージャーが対話的に発行できる照会の例です。 通常、顧客マネージャーは、アプリケーション・プログラムを使ってビデオを検出し、再生します。 次の図 は、C でコーディングされたそのようなアプリケーションの主要要素を示しています。 このアプリケーションでは、hvVid_fname という名前の DB2 ホスト変数にビデオ・ファイルの名前が取り出されます。 さらに、このアプリケーションでは、DBvPlay という名前の再生 API を使ってビデオが再生されます。
#include <dmbvideo.h> int count = 0; EXEC SQL BEGIN DECLARE SECTION; char hvClient[30]; /*client name*/ char hvCampaign[30]; /*campaign name*/ char hvSdate[8]; /*ship date*/ char hvVid_fname [251] /*video file name*/ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE c1 CURSOR FOR SELECT CLIENT, CAMPAIGN, SHIP_DATE, FILENAME(ADS_VIDEO) FROM ADS WHERE CLIENT='IBM' AND SHIP_DATE>='01/01/1997' AND DURATION(ADS_VIDEO)<=30 FOR FETCH ONLY; EXEC SQL OPEN c1; for (;;){ EXEC SQL FETCH c1 INTO :hvClient, :hvCampaign, :hvSdate, :hvVid_fname; if (SQLCODE != 0) break; printf("\nRecord %d:\n", ++count); printf("Client = '%s'\n", hvClient); printf("Campaign = '%s'\n", hvCampaign); printf("Sdate = '%s'\n", hvSdate); rc=DBvPlay(NULL,MMDB_PLAY_FILE,hvVid_fname,MMDB_PLAY_WAIT); } EXEC SQL CLOSE c1; |