⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treq.c

📁 oracle9i+j2ee开发aq oracle9i+j2ee开发aq oracle9i+j2ee开发aq
💻 C
字号:
/* Copyright (c) Oracle Corporation 2001. All Rights Reserved. *//*   NAME     treq.c - an OCI example of doing transformation during an enqueue   DESCRIPTION     This examples does an enqueue into BZ_ADM.BZCARDORDERS_Q with a      transformation BZ_ADM.BZCARDVERIFY*/#ifndef OCI_ORACLE#include <oci.h>#endifstatic void checkerr(errhp, status)OCIError *errhp;sword status;{  text errbuf[512];  ub4 buflen;  sb4 errcode;  if (status == OCI_SUCCESS) return;  switch (status)  {  case OCI_SUCCESS_WITH_INFO:    printf("Error - OCI_SUCCESS_WITH_INFO\n");    break;  case OCI_NEED_DATA:    printf("Error - OCI_NEED_DATA\n");    break;  case OCI_NO_DATA:    printf("Error - OCI_NO_DATA\n");    break;  case OCI_ERROR:    OCIErrorGet ((dvoid *) errhp, (ub4) 1, (text *) NULL, &errcode,	    errbuf, (ub4) sizeof(errbuf), (ub4) OCI_HTYPE_ERROR);    printf("Error - %s\n", errbuf);    break;  case OCI_INVALID_HANDLE:    printf("Error - OCI_INVALID_HANDLE\n");    break;  case OCI_STILL_EXECUTING:    printf("Error - OCI_STILL_EXECUTE\n");    break;  case OCI_CONTINUE:    printf("Error - OCI_CONTINUE\n");    break;  default:    printf("Error - %d\n", status);    break;  }}struct message{  OCINumber    employee_id;  OCIString   *first_name;  OCIString   *last_name;  OCIString   *ord_typ;};typedef struct message message;struct null_message{  OCIInd    null_adt;  OCIInd    null_id;  OCIInd    null_frname;  OCIInd    null_lsname;  OCIInd    null_ortyp;};typedef struct null_message null_message;void main(argc, argv)int    argc;char **argv;{  OCIEnv *envhp;  OCIServer *srvhp;  OCIError *errhp;  OCISvcCtx *svchp;  OCISession *usrhp;  dvoid	     *tmp;  OCIType *mesg_tdo = (OCIType *) 0;  null_message nmesg;  null_message	*nmsg = &nmesg;  message 	*msg;  OCIAQEnqOptions *enqopt = (OCIAQEnqOptions *)0;  OCIAQMsgProperties *msgprop = (OCIAQMsgProperties *)0;  int  emp_id = 123;  OCIInitialize((ub4) OCI_OBJECT, (dvoid *)0,  (dvoid * (*)()) 0,	(dvoid * (*)()) 0,  (void (*)()) 0 );    OCIHandleAlloc( (dvoid *) NULL, (dvoid **) &envhp, (ub4) OCI_HTYPE_ENV,	   52, (dvoid **) &tmp);    OCIEnvInit( &envhp, (ub4) OCI_DEFAULT, 21, (dvoid **) &tmp  );    OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &errhp, (ub4) OCI_HTYPE_ERROR,	   52, (dvoid **) &tmp);  OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &srvhp, (ub4) OCI_HTYPE_SERVER,	   52, (dvoid **) &tmp);    OCIServerAttach( srvhp, errhp, (text *) 0, (sb4) 0, (ub4) OCI_DEFAULT);    OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &svchp, (ub4) OCI_HTYPE_SVCCTX,	   52, (dvoid **) &tmp);    /* set attribute server context in the service context */  OCIAttrSet( (dvoid *) svchp, (ub4) OCI_HTYPE_SVCCTX, (dvoid *)srvhp, (ub4) 0,	   (ub4) OCI_ATTR_SERVER, (OCIError *) errhp);    /* allocate a user context handle */  OCIHandleAlloc((dvoid *)envhp, (dvoid **)&usrhp, (ub4) OCI_HTYPE_SESSION,	   (size_t) 0, (dvoid **) 0);    OCIAttrSet((dvoid *)usrhp, (ub4)OCI_HTYPE_SESSION,	   (dvoid *)"bz", (ub4)strlen("bz"), 	   OCI_ATTR_USERNAME, errhp);	       OCIAttrSet((dvoid *)usrhp, (ub4)OCI_HTYPE_SESSION,	   (dvoid *)"bz", (ub4)strlen("bz"),	   OCI_ATTR_PASSWORD, errhp);    checkerr(errhp, OCISessionBegin (svchp, errhp, usrhp, OCI_CRED_RDBMS, 				   OCI_DEFAULT));    OCIAttrSet((dvoid *)svchp, (ub4)OCI_HTYPE_SVCCTX,	   (dvoid *)usrhp, (ub4)0, OCI_ATTR_SESSION, errhp);  checkerr(errhp, OCITypeByName(envhp, errhp, svchp, 	    (CONST text *)"BZ_ADM", strlen("BZ_ADM"),	    (CONST text *)"BZCARDORDER_TYP", strlen("BZCARDORDER_TYP"),             (text *)0, 0, OCI_DURATION_SESSION, OCI_TYPEGET_ALL, &mesg_tdo));  /**************************** allocate AQ descriptors **********************/  checkerr(errhp, OCIDescriptorAlloc(envhp, (dvoid **)&enqopt,                                     OCI_DTYPE_AQENQ_OPTIONS, 0, (dvoid **)0));  checkerr(errhp, OCIDescriptorAlloc(envhp, (dvoid **)&msgprop,                                  OCI_DTYPE_AQMSG_PROPERTIES, 0, (dvoid **)0));  checkerr( errhp, OCIObjectNew (envhp, errhp, svchp,OCI_TYPECODE_OBJECT,     mesg_tdo, (dvoid *)0, OCI_DURATION_SESSION, TRUE, (dvoid **)&msg));  checkerr(errhp, OCINumberFromInt(errhp, &emp_id, sizeof(emp_id), 0,&msg->employee_id));   checkerr(errhp, OCIAttrSet(enqopt, OCI_DTYPE_AQENQ_OPTIONS,                             (dvoid *)"BZ_ADM.BZCARDVERIFY",                               sizeof("BZ_ADM.BZCARDVERIFY"),                             OCI_ATTR_TRANSFORMATION, errhp));  nmsg->null_adt = nmsg->null_id = 0;  nmsg->null_frname = nmsg->null_lsname = nmsg->null_ortyp = -1;  checkerr(errhp, OCIAQEnq(svchp, errhp, (text *)"BZ_ADM.BZCARDORDERS_Q", 			       enqopt, msgprop, 			       mesg_tdo, (dvoid **)&msg, (dvoid **)&nmsg, 			       0, 0));  printf("AQ descriptors allocated\n");      checkerr(errhp, OCITransCommit(svchp, errhp, (ub4) 0));  checkerr(errhp, OCIDescriptorFree((dvoid *)enqopt, OCI_DTYPE_AQENQ_OPTIONS));  checkerr(errhp, OCIDescriptorFree((dvoid *)msgprop, 				    OCI_DTYPE_AQMSG_PROPERTIES));  checkerr(errhp, OCIServerDetach( srvhp, errhp, (ub4) OCI_DEFAULT));}/* end of file treq.c */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -