Предопределённые константы oci8


Предопределенные константы

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение было подгружено во время выполнения.

DBX_MYSQL ( integer ) DBX_ODBC ( integer ) DBX_PGSQL ( integer ) DBX_MSSQL ( integer ) DBX_FBSQL ( integer ) DBX_OCI8 ( integer ) (доступна с PHP 4.3.0) DBX_SYBASECT ( integer ) DBX_SQLITE ( integer ) (PHP 5) DBX_PERSISTENT ( integer ) DBX_RESULT_INFO ( integer ) DBX_RESULT_INDEX ( integer ) DBX_RESULT_ASSOC ( integer ) DBX_RESULT_UNBUFFERED ( integer ) (PHP 5) DBX_COLNAMES_UNCHANGED ( integer ) (доступна с PHP 4.3.0) DBX_COLNAMES_UPPERCASE ( integer ) (доступна с PHP 4.3.0) DBX_COLNAMES_LOWERCASE ( integer ) (доступна с PHP 4.3.0) DBX_CMP_NATIVE ( integer ) DBX_CMP_TEXT ( integer ) DBX_CMP_NUMBER ( integer ) DBX_CMP_ASC ( integer ) DBX_CMP_DESC ( integer )

��������� OCI8: ��� ��������� & quot; ������������� �������������� ��������� OCI_COMMIT_ON_SUCCESS & quot; ������?

� ������� ���������� OCI8 �� ������� RedHat (RHEL7) ��� ����� ������� Apache.
� ���� ������, ����� � ������� ������������ � ������ ������� � ������� Symphony, � ������� ��� ������:

���������� �ErrorException�: ������������� �������������� ��������� OCI_COMMIT_ON_SUCCESS � ��������������, ��� OCI_COMMIT_ON_SUCCESS

��� ��� � ������ ��� ��������� OCI8.

  1. ��������� oracle-instantclient11.2 RPM (devel � basic).
  2. ��������� ������ OCI8:

��� ���������� � ���� ��� ���� Oracle 12C �� ���� �������, �� � ���� ���������� ���� ���������� PHP � ������� ������� (Oracle 11GR2).

  1. �������������� php.ini, ����� �������� extension=oci8.so ,

� ����� ��� ���� � � ������� ������������ oci_connect � � ������� ��� ������:

������������ ������: ����� �������������� ������� oci_connect ()

��� � ���� ��������� ��� ��������?

�������������: � ������ ��� ����� ��� ������ � php_error.log:

[26-Sep-2020 16:14:12 ������ / �����] �������������� PHP: ������ PHP: ���������� ��������� ������������ ���������� �/opt/rh/rh-php56/root/usr/lib64/php/modules/oci8.so� � /opt/rh/rh-php56/root/usr/lib64/php/modules/oci8.so: �������������� ������: _emalloc_128 � ���� ���������� � ������ 0

�������

�������� ����� ���� , �������������� PHP ������� ���������� ���������. ����, � ��������� ������ OCI8 ������� � ������������ �����. �� �� ���� ��� � �� ������ ��������� ������, ������ ��� �������� �� ����� PECL:

����������� �pecl install oci8-2.0.12� ��� ���������
��� PHP 5.2 � PHP 5.6.

����� ����, ��������� � ���� ��� ���� ���� ������ Oracle �� ���� �������, � ����������� ��� ������� ��� ��������� ����������:

������ � ���� ����� ���������� OCI8, ��������� �� ���� �������� phpinfo.

������� ��� ������ � Oracle

��������

��� ������� ��������� ��� �������� � Oracle ������ 10/9/8/7. ��� ����� ������������ ���������� Oracle Call Interface (OCI).

������ ������ ����� ����� ��������. �� �������� ������� �������� ���������� PHP � ��������������� ������ Oracle, ����������� ��������� LOB, FILE � ROWID. ������������� ����� ������ ������������� ������ ������� ������.

����������

��� ����������� ���������� ���������� Oracle ��� ����, ����� ������������ ���� ������. ������������� Windows ����� ���������� ���������� ������� ������ 10 ��� ����, ����� ������������ php_oci8.dll .

�� ����������� ��� ������������ Oracle Instant Client, ��������� �� ������ � http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html. ��� ������������� ������ OCI8 ���������� ���������� «basic» ������ ������ Oracle Instant Client. Instant Client �� ������� ��������� ���������� ORACLE_SID ��� ORACLE_HOME. ������, ��� �������� ����������� ���������� ���������� ��������� LD_LIBRARY_PATH � NLS_LANG.

����� �������������� ����� ������, ���������, ��� �� ���������� ��� ����������� ���������� ���������. ��� ����������, ������������� ����, ������ ���� �������� ������������ Oracle � ������������, � ������� �������� �������� ���-������. ���������� ���������, ����������� ��� ���������� ������ � Oracle:

  • ORACLE_HOME
  • ORACLE_SID
  • LD_PRELOAD
  • LD_LIBRARY_PATH
  • NLS_LANG
  • ORA_NLS33

����� ��������� ����� ��������� ��� ���-�������, �������� ������������, � ������� �������� �������� ���-������, � ������ oracle.

Note: ���� ��� ���-������ �� �������� ��� ���������� ������ ��� ������ ���������, ��� Apache ��� ��������� � ����������� pthread:

�������� �������� �� ��, ��� �� ��������� ��������, ��������, UnixWare, ������ libthread ������������ libpthread. PHP � Apache ����� ������ ���� ������� � EXTRA_LIBS=-lthread.

���������

PHP ������ ���� ��������������� � ������ —with-oci8[=DIR] , ��� DIR ������������� ����������, � ������� ��������� ������������� ����� ������ �/��� ������ Oracle. �� ��������� �������� DIR ������������� ���������� ��������� ORACLE_HOME.

���� �� ����������� Oracle Instant Client, �� ��� ��������� ������ OCI8 �����, ����� PHP ��� ��������������� � ������ —with-oci8-instant-client[=DIR] . �������� ��������: ��������� Oracle Instant Client ��������� ������ ������� � ������ 4.3.11 � 5.0.4.

��������� �� ����� ����������

������ ���������� �� ���������� ������� ��������� ������������ � php.ini .

���� ��������

���������������� ���������

������������� ���� ��������� ���������� ������ ����������� � ����� ���� �������� ������ � ��� ������, ���� PHP ��� ������ � ���������� ����� ���������� ��� �� � ��� ������, ���� ������ ���������� ������������ �� ����� ����������.

OCI_DEFAULT (integer) ����� ���������� ��������� SQL. � ���� ������ ���������� �� ����������� ������������� ���������� COMMIT. OCI_DESCRIBE_ONLY (integer) ����� ���������� ��������� SQL. ����������� ���� �����, ���� �� ������ �������� ������ � ���������� �������, � �� ��������� ��� ������. OCI_COMMIT_ON_SUCCESS (integer) ����� ���������� ��������� SQL. ���������� ������������� ����������� ������� ��������� COMMIT ����� ���������� oci_execute(). OCI_EXACT_FETCH (integer) ����� ��������� ����������� �������. ������������ � ��� ������, ���� ���������� �������� ������� ������� ����� ����� �������� � ����������. Oracle 8 � ����� ������� ������ �� ���������� ������� ����������� � ����������� � ���� ������, � ������� ������������ ������������� ����� ������� ���������� ���������� �����, ��� ����� ��������� ���������� ������� � ��������. OCI_SYSDATE (integer) OCI_B_BFILE (integer) ������������ �������� oci_bind_by_name() ��� �������� ���������� ���� BFILE. OCI_B_CFILEE (integer) ������������ �������� oci_bind_by_name() ��� �������� ���������� ���� CFILE. OCI_B_CLOB (integer) ������������ �������� oci_bind_by_name() ��� �������� ���������� ���� CLOB. OCI_B_BLOB (integer) ������������ �������� oci_bind_by_name() ��� �������� ���������� ���� BLOB. OCI_B_ROWID (integer) ������������ �������� oci_bind_by_name() ��� �������� ���������� ���� ROWID. OCI_B_CURSOR (integer) ������������ �������� oci_bind_by_name() ��� �������� ��������, ��������� ����� � ������� oci_new_cursor(). OCI_B_NTY (integer) ������������ �������� oci_bind_by_name() ��� �������� ����������� ����� ������. � PHP OCI_B_BIN (integer) SQLT_BFILEE (integer) �� ��, ��� � OCI_B_BFILE. SQLT_CFILEE (integer) �� ��, ��� � OCI_B_CFILEE. SQLT_CLOB (integer) �� ��, ��� � OCI_B_CLOB. SQLT_BLOB (integer) �� ��, ��� � OCI_B_BLOB. SQLT_RDD (integer) �� ��, ��� � OCI_B_ROWID. SQLT_NTY (integer) �� ��, ��� � OCI_B_NTY. OCI_FETCHSTATEMENT_BY_COLUMN (integer) ����� oci_fetch_all() �� ���������. OCI_FETCHSTATEMENT_BY_ROW (integer) �������������� ����� oci_fetch_all(). OCI_ASSOC (integer) ������������ � oci_fetch_all() � oci_fetch_array() ��� ��������� �������������� �������. OCI_NUM (integer) ������������ � oci_fetch_all() � oci_fetch_array() ��� ��������� ������� � ��������� ���������. OCI_BOTH (integer) ������������ � oci_fetch_all() � oci_fetch_array() ��� ��������� ������� � �������������� � ��������� ���������. OCI_RETURN_NULLS (integer) ������������ � oci_fetch_array() ��� ��������� ������ ��������� �������, ���� ��������������� ���� � ���������� ����� NULL. OCI_RETURN_LOBS (integer) ������������ oci_fetch_array() ��� ��������� ���������� ������� LOB ������ �����������. OCI_DTYPE_FILE (integer) ���� ������������ oci_new_descriptor() ��� ������������� ����������� ���� FILE. OCI_DTYPE_LOB (integer) ���� ������������ oci_new_descriptor() ��� ������������� ����������� ���� LOB. OCI_DTYPE_ROWID (integer) ���� ������������ oci_new_descriptor() ��� ������������� ����������� ���� ROWID. OCI_D_FILE (integer) �� ��, ��� � OCI_DTYPE_FILE. OCI_D_LOB (integer) �� ��, ��� � OCI_DTYPE_LOB. OCI_D_ROWID (integer) �� ��, ��� � OCI_DTYPE_ROWID.

�������

Example#1 ������� �������������

// by sergo at bacup dot ru

// Use option: OCI_DEFAULT for execute command to delay execution
OCIExecute ( $stmt , OCI_DEFAULT );

// for retrieve data use (after fetch):

$result = OCIResult ( $stmt , $n );
if ( is_object ( $result )) $result = $result -> load ();

// For INSERT or UPDATE statement use:

$sql = «insert into table (field1, field2) values (field1 = ‘value’,
field2 = empty_clob()) returning field2 into :field2″ ;
OCIParse ( $conn , $sql );
$clob = OCINewDescriptor ( $conn , OCI_D_LOB );
OCIBindByName ( $stmt , «:field2» , & $clob , — 1 , OCI_B_CLOB );
OCIExecute ( $stmt , OCI_DEFAULT );
$clob -> save ( «some text» );
OCICommit ( $conn );

�� ������ ������������ �������� ��������� ��� ��, ��� ��� �������� �� ��������� ������.

Example#2 ������������� �������� ��������

// by webmaster at remoterealty dot com
$sth = OCIParse ( $dbh , «begin sp_newaddress( :address_id, ‘$firstname’,
‘$lastname’, ‘$company’, ‘$address1’, ‘$address2’, ‘$city’, ‘$state’,
‘$postalcode’, ‘$country’, :error_code );end;» );

// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable.
// Then you do the binding:

OCIBindByName ( $sth , «:address_id» , $addr_id , 10 );
OCIBindByName ( $sth , «:error_code» , $errorcode , 10 );
OCIExecute ( $sth );

LXXXVII. ������� ��� ������ � Oracle

��� ������� ��������� ��� �������� � Oracle ������ 9/8/7. ��� ����� ������������ ���������� Oracle Call Interface (OCI).

��� ����������� ���������� ���������� Oracle ��� ����, ����� ������������ ���� ������. ������������� Windows ����� ��������� Oracle ������ ������� 8.1 ��� ����, ����� ������������ php_oci8.dll .

����� �������������� ����� ������, ���������, ��� �� ���������� ��� ����������� ���������� ���������. ��� ����������, ������������� ����, ������ ���� �������� ������������ Oracle � ������������, � ������� �������� �������� ���-������. ���������� ���������, ����������� ��� ���������� ������ � Oracle:

����� ��������� ����� ��������� ��� ���-�������, �������� ������������, � ������� �������� �������� ���-������, � ������ oracle.

���� ��� ���-������ �� �������� ��� ���������� ������ ��� ������: ���������, ��� Apache ��� ��������� � ����������� pthread :

# ldd /www/apache/bin/httpd libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000) libm.so.6 => /lib/libm.so.6 (0x4002f000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000) libdl.so.2 => /lib/libdl.so.2 (0x4007a000) libc.so.6 => /lib/libc.so.6 (0x4007e000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

���� libpthread �� ������������ � ������, �� ��� �������� �������������� Apache:

# cd /usr/src/apache_1.3.xx # make clean # LIBS=-lpthread ./config.status # make # make install

�������� �������� �� ��, ��� �� ��������� ��������, ��������, UnixWare, ������ libthread ������������ libpthread . PHP � Apache ����� ������ ���� ������� � EXTRA_LIBS=-lthread.

PHP ������ ���� ��������������� � ������ —with-oci8[=DIR] , ��� DIR ������������� ����������, � ������� ��������� ������������� ����� ������ �/��� ������ Oracle. �� ��������� �������� DIR ������������� ���������� ��������� ORACLE_HOME .

���� �� ����������� Oracle Instant Client, �� ��� ��������� ������ OCI8 �����, ����� PHP ��� ��������������� � ������ —with-oci8-instant-client[=DIR] . �������� ��������: ��������� Oracle Instant Client ��������� ������ ������� � ������ 4.3.11 � 5.0.4.

������ ���������� �� ���������� ������� ��������� ������������ � php.ini .

������������� ���� ��������� ���������� ������ ����������� � ����� ���� �������� ������ � ��� ������, ���� PHP ��� ������ � ���������� ����� ���������� ��� �� � ��� ������, ���� ������ ���������� ������������ �� ����� ����������.

����� ���������� ��������� SQL. � ���� ������ ���������� �� ����������� ������������� ���������� COMMIT.

����� ���������� ��������� SQL. ����������� ���� �����, ���� �� ������ �������� ������ � ���������� �������, � �� ��������� ��� ������.

����� ���������� ��������� SQL. ���������� ������������� ����������� ������� ��������� COMMIT ����� ���������� oci_execute() .

����� ��������� ����������� �������. ������������ � ��� ������, ���� ���������� �������� ������� ������� ����� ����� �������� � ����������. Oracle 8 � ����� ������� ������ �� ���������� ������� ����������� � ����������� � ���� ������, � ������� ������������ ������������� ����� ������� ���������� ���������� �����, ��� ����� ��������� ���������� ������� � ��������.

�� ��, ��� � OCI_B_BFILE .

�� ��, ��� � OCI_B_CFILEE .

�� ��, ��� � OCI_B_CLOB .

�� ��, ��� � OCI_B_BLOB .

�� ��, ��� � OCI_B_ROWID .

�� ��, ��� � OCI_B_NTY .

�� ��, ��� � OCI_DTYPE_FILE .

�� ��, ��� � OCI_DTYPE_LOB .

�� ��, ��� � OCI_DTYPE_ROWID .

������ 1. ������� �������������

// by sergo at bacup dot ru

// Use option: OCI_DEFAULT for execute command to delay execution
OCIExecute ( $stmt , OCI_DEFAULT );

// for retrieve data use (after fetch):

$result = OCIResult ( $stmt , $n );
if ( is_object ( $result )) $result = $result -> load ();

// For INSERT or UPDATE statement use:

$sql = «insert into table (field1, field2) values (field1 = ‘value’,
field2 = empty_clob()) returning field2 into :field2″ ;
OCIParse ( $conn , $sql );
$clob = OCINewDescriptor ( $conn , OCI_D_LOB );
OCIBindByName ( $stmt , «:field2» , & $clob , — 1 , OCI_B_CLOB );
OCIExecute ( $stmt , OCI_DEFAULT );
$clob -> save ( «some text» );
OCICommit ( $conn );

�� ������ ������������ �������� ��������� ��� ��, ��� ��� �������� �� ��������� ������.

������ 2. ������������� �������� ��������

// by webmaster at remoterealty dot com
$sth = OCIParse ( $dbh , «begin sp_newaddress( :address_id, ‘$firstname’,
‘$lastname’, ‘$company’, ‘$address1’, ‘$address2’, ‘$city’, ‘$state’,
‘$postalcode’, ‘$country’, :error_code );end;» );

// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable.
// Then you do the binding:

OCIBindByName ( $sth , «:address_id» , $addr_id , 10 );
OCIBindByName ( $sth , «:error_code» , $errorcode , 10 );
OCIExecute ( $sth );

When fetching associative arrays, use uppercase string indices. It appears the PHP OCI Library is less lenient with the field names returned by Oracle.

echo $row[‘field1’]; // This won’t return anything.

Great Solaris patch! Finally built. Here’s some tips on connecting:

Just made this on solaris8 32bit, actually works.

1) put everything in one directory
2) unsetenv ORACLE_HOME
3) set the env vars LD_LIBRARY_PATH and SQLPATH and TNS_ADMIN(if you have it) to that directory.
4) use one of the other easy connection notations here

These env vars worked when put at the top of apachectl script as well.

To build you may have to fake it out with an ORACLE_HOME var, but unset it later. You may also have to fake out the build by putting header files where it is looking for them, e.g. in the rdbms/demo directory or some such other place.

When running though, make sure you have only the files required in only one directory.

Oracle has not put up a link to the 32bit solaris sqlplus—you have to guess it—it’s there though:

. and don’t forget to add «.world» on to the end of your SID. It’s very common to have to specify DBNAME.WORLD to connect.

PHP 5.0.3 + Solaris 9 (UltraSPARC) + Apache 2.0.51 + Oracle 10g Instant Client 10.1.0.3

Thanks to Jakob’s patch I got this combination working. Here are some things that helped me:

1. After getting this:
ld: fatal: file /opt/oracle/instantclient/libclntsh.so: wrong ELF class: ELFCLASS64

I realized that PHP is a 32-bit application and that all 3rd-party libraries need to be 32-bit as well. You need to download the 32-bit version of Instant Client (basic + sdk), even if you are running the 64-bit Solaris OS.

2. My patch command syntax was a little different:
patch -p0 -i php5_ociclient.patch config.m4

Thanks again to Jakob for porting the patch over to PHP 5.

Yes, i`ve made it !
Installing PHP 5.0.3 and the Oracle 10g Instant Client on Linux .

There is no need to have a full Oracle Installation on the Webserver, you only need the client.

The patches provided from Oracle are for PHP Versions 4.3.9 or 4.3.10.

Here is the handmade patch for PHP 5.0.3 :

.
patch -u php-5.0.3/ext/oci8/config.m4 php5_ociclient.patch
cd php-5.0.3
rm -rf autom4te.cache config.cache
./buildconf —force
.

Download the Patch here:

Feel free to ask me if there are any questions

Hello once again.
This time I present details on how to get Oracle Instant Client 10g ( 10.1.0.3 ), PHP 5.0.3 and Apache 2.0.52 running together on Linux (I’ve used fedora core 1 but I can’t see why this will not work for any other distro )
*Note* This is not a guide on compiling php and httpd there are plenty of guides around to do that. This just covers compiling and using the oci8 module with php.

1. Set-up and install apache-2.0.52 as per normal

2. Unpack the Oracle 10g Instant Client ( 10.1.0.3 SDK + Basic, I also use the sqlplus pack to test the connection outside of apache / php )
rpm -ivh oracle-instantclient-basic-10.1.0.3-1.i386.rpm oracle-instantclient-devel-10.1.0.3-1.i386.rpm oracle-instantclient-sqlplus-10.1.0.3-1.i386.rpm

3. Set env ORACLE_HOME to the clients path in the current shell your shell command may vary (this is bash )
export ORACLE_HOME=/usr/lib/oracle/10.1.0.3/client; export LD_LIBRARY_PATH=/usr/lib/oracle/10.1.0.3/client/lib;
(if you want to test if you can now get a connection to oracle using sqlplus see item 10 below.)

4. Unpack php-5.0.3 as per normal add in —with-oci8 to the configure options. If the ORACLE_HOME is set previously then adding the directory as per «—with-oci8=$ORACLE_HOME» should not be necessary. Do this to be safe though.

5. Run the ./configure program in php source directory. Don’t make it just yet though.

6. The compiler needs to find the includes oci.h + others so, from the default client install dirs, I needed to edit the php Makefile after it was configured. Open it up and look for «EXTRA_INCLUDES» and add to end of line
-I/usr/include/oracle/10.1.0.3/client (thats a capital i ) save the Makefile, then finish off compiling and installing php. Please note im sure this will be changed in php’s configure so it finds these by default in the not too distant future.

7. Create a directory /etc/oracle and place your tnsnames.ora file in there, (VERY IMPORTANT make sure you chmod your tnsnames.ora to ensure that whatever username your httpd server runs under can read the file (1.5 hours of frustration later i figured this out). I just did «chmod 0644 tnsnames.ora» it doesn’t matter where you put this as long as you set the env TNS_ADMIN to it. (IMPORTANT TNS_ADMIN points to a directory not the actual tnsnames.ora file )

9. start httpd and bobs your uncle.

10. You can test connection once the instant client rpm’s are installed by using sqlplus. set ORACLE_HOME as above, TNS_ADMIN as above, LD_LIBRARY_PATH as above and if necessary. Then sqlplus /

@ use sqlplus here as you would normally

Mark
PS: Thanks Oracle for the SDK, about time !

If you are experiencing problems with oracle not maintining a connection although you are sure it was able to make a connection just a few seconds or minutes ago make sure you do a putenv(‘ORACLE_HOME=/path/to/oracle/libraries’)

In connection to this make sure Oracle client is installed in admin mode. Failure to do so may cause php compilation to fail.

ReCompiling PHP4 to have oracle 8 support (oci8) on Debian Linux, using the Oracle 10g client libraries. Log in as root.

PACKAGES REQUIRED:
php4-dev
php4 (source files)
php4 module (might not be required, but it’s what i had installed at the time)

OTHER PACKAGE REQUIREMENTS:
Oracle Client Libraries (i used Oracle 10g Server, but you should be able to use, as has been previously said, any set of the oracle client libraries from 8i onwards).
* make sure this is installed before recompiling php4.

ENVIRONMENT REQUIREMENTS:
— export ORACLE_HOME=[where u installed the oracle client]
— export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
— export LD_PRELOAD=libclntsh.so.10.1 (the version number at the end will correspond to the oracle version you previously installed. in my case, 10g is 10.1).
— vi /etc/ld.so.conf and add $ORACLE_HOME/lib to the list of paths.
then * run ldconfig to reload those changes to the system * (p.s. make sure it’s the full path, and not using any environment variables. e.g. /u01/app/oracle/product/10gRDBMS is my ORACLE_HOME).

STEPS:
— cd /usr/src/[PHP4 Version]
in my case, [PHP4 Version] = php4-4.3.8, so path was
/usr/src/php4-4.3.8

— vi debian/rules
these are the default compilation rules for php4. Find section labeled COMMON_CONFIG = [. ] and add —with-oci8 (it should be near the top of the file).

— debchange -i (allows you to edit the change log for the versions of php. btw — you should be in the php4 source code directory). give the version id something obviously unique. don’t forget to add a comment.

when all is in readyness, then you should be able to go debian/rules binary to build the debian packages required.
the deb packages are built into the /usr/src directory. and depending on the default compilation options u choose, there should be a few. find the deb package that corresponds to the main php4 module (php4_4.3.8-4.mark.1_i386.deb for me), and run dpkg -i [package name] to install it.

— vi /etc/init.d/apache and add exports for $ORACLE_HOME, $LD_PRELOAD and $LD_LIBRARY_PATH

* don’t forget to restart apache /etc/init.d/apache to reload the php4 module. *

IF YOU GET. :
if you get an error saying something about apache cannot load libclntsh.so.10.1, file not found, check the environment variables, for both the user, and in /etc/init.d/apache and also check ld.so.conf to make sure the $ORACLE_HOME/lib path is in there, and has been reloaded (with ldconfig).

editing ld.so.conf was the part that finally got it working for me.
as you should be able to tell, the steps are pretty much the same as for all oracle versions 8i onwards, and all linux OS’s. but with a few debian specific paths and commands thrown in.

For those trying to use the Oracle Instant Client 10g in a win32 environment, heres a nice easy howto. If you fully read the docs properly and understand what your reading you will be able to set it up, but if like me you want a quick easy fix, heres how I did it.

1. Download and install the Oracle Instant Client to where ever (lets say c:\ora\client )
2. Add your connect info, copy a previously created or provided tnsnames.ora file to the above directory.
3. Change Path in the Environment Variables area to add this directory to the path. ie. c:\ora\client;%SystemRoot%;
4. Open regedit and add a Key called ORACLE to HKEY_LOCAL_MACHINE\SOFTWARE
5. To the ORACLE key add a string value called TNS_ADMIN and assign it the directory above (ie. c:\ora\client ) So you end up with KEY_LOCAL_MACHINE\SOFTWARE\ORACLE\TNS_ADMIN = c:\ora\client
6. Set php to use Oci8 extension and bobs your uncle
7. Reboot.

Option 7 was required as the oci8 extension or php wouldn’t pick up the path change. Also my problem was how to use other programs like sqlplus without creating extra Environment Variables etc the TNS_ADMIN / tnsnames.ora part makes that simpler and allows you to call things the same as you would before.

PS: This should apply to all the Instant Clients. I haven’t tried it with any others but 10g though.

Hope this helps.

For those of you running Oracle on Linux, and running a remote box also on Linux, here’s an easy way to get OCI8 working without having to install the whole Oracle DB just to get your client working.

[PS — For the life of me, installing client libraries for Oracle really shouldn’t be this hard, but it really truly is.]

Step 1. Copy the following directories from your ORACLE_HOME directory where Oracle is installed (the database server) to your remote client server/machine:

lib, network, ocommon, plsql, rdbms, oracore

These contain all of the files/folders/libraries you’ll need to compile OCI8 into PHP. I put this in /home/beckman/oracle and set ORACLE_HOME as that dir.

Step 2. Compile PHP with —with-oci8=/home/beckman/oracle (obviously using your directory, not mine). Install, (re)start apache.

Step 3. Remove plsql and rdbms directories from ORACLE_HOME on your remote server, leaving you with lib, network, ocommon and oracore.

NOTE: This will only help you if you (a) have Oracle successfully running on Linux (was RH Enterprise 3 for me) and your client box is running the same OS. I’m not sure it will work on earlier versions, but it may. Your results should be posted here methinks!

Passing CLOB to stored procedure and retrieve CLOB too (function lobinout(a in clob) return clob)

( 1 + 2 + 4 + 8 );
$conn = OCILogon ( ‘batdtd’ , ‘batdtd’ , ‘batxml’ );

$lobin = OCINewDescriptor ( $conn , OCI_D_LOB );
$lobout = OCINewDescriptor ( $conn , OCI_D_LOB );

$stmt = OCIParse ( $conn , «declare rs clob; begin :rs := lobinout(:par); end;» );
$lob_data = ‘abcdefgh’ ;

echo «binding lobin. » ;
OCIBindByName ( $stmt , ‘:par’ , $lobin , — 1 , OCI_B_CLOB );

echo «done
binding rs. » ;

OCIBindByName ( $stmt , ‘:rs’ , $lobout , — 1 , OCI_B_CLOB );

echo «done
writing temp lob. » ;
// here we pass data to func
$lobin -> WriteTemporary ( $lob_data );
echo «done
executing. » ;

OCIExecute ( $stmt , OCI_DEFAULT );
// here we load data returned from func
echo «done
rs = » . $lobout -> load ();
OCICommit ( $conn );
$lobin -> free ();
$lobout -> free ();
OCIFreeStatement ( $stmt );
OCILogoff ( $conn );
?>

PHP Oracle — Compiling Oracle Support into PHP, Apache 2
Apache 2.0.48, Php 4.3.4, Red Hat Linux 9.0, Debian 3.0, Oracle 9i R2
Dave Darden ? 1/17/04 — www.dardensystems.com

First install Apache 2 from source. Instructions are at http://httpd.apache.org/docs-2.0/install.html.
I used a —prefix=/usr/local/apache on the install.

Install Oracle. There is a very good Oracle install to RedHat 9.0 white paper at http://www.dizwell.com/ that goes step by step through the problems (Oracle is not supported on RedHat 9. Oracle only supports installation on paid versions of Red Hat).

If only an Oracle client is installed on the web server (if the database is on another machine in a multi-tier configuration) then you must install both the client and the Oracle Call Interface (OCI). I think SQLPlus also needs to be installed. Oracle Network Utilities and Installation Common Files were also installed. If you cannot configure/make php because of missing Oracle library errors during configure/make, then investigate whether you have installed enough of the ?client? pieces of Oracle on the web server machine.

I also included a link from libclntsh.so.8.0 to libclntsh.so.9.0 in the $ORACLE_HOME/lib directory. Some internet posts suggested it to prevent errors in php configure/make. A later experience moving from RedHat to Debian confirms that it is necessary to avoid a make error on a missing lclntsh file.

In transferring the client software from a Red Hat 9.0 web server installation to a Debian 3.0 (kernel 2.4.18) web server installation I was able to simply copy over the Oracle /u01 directory tree without rerunning the Oracle client installation. This must be done before php is configured and compiled on the Debian machine so the oci8 libraries are available. And of course the tips on libclntsh and environment variables must be observed as well.

Get the php source. This php configure line worked for me, creating an Apache 2 module, and keeping mysql and gd support. Add other options if you need them for a given site. For some reason, even though gd is included with php now, zlib was needed to successfully configure and make php from source when including gd. You will need to substitute appropriate directory locations for your install of Apache, zlib, and Oracle.

./configure —with-apxs2=/usr/local/apache/bin/apxs \
—with-mysql —with-gd \
—with-zlib-dir=/usr/local \
—with-config-file-path=/etc \
—enable-force-cgi-redirect —disable-cgi \
—with-oci8=/u01/app/oracle/9i —enable-sigchild

Use an absolute path on -?with-oci8=/u01/app/oracle/9i
(Do not use the $ORACLE_HOME path variable in the configure statement. For some reason it does not work even when it is set properly.)

Also, set the environment variables in
/usr/local/apache/bin/envvars like so (your env var values should vary):

export ORACLE_S
export ORACLE_HOME=»/u01/app/oracle/9i»
export TNS_ADMIN=»/u01/app/oracle/9i/network/admin»
export LD_LIBRARY_PATH=»/u01/app/oracle/9i/lib»
export TNS_ADMIN=»/u01/app/oracle/9i/network/admin/tnsnames.ora»
export TWO_TASK=»/u01/app/oracle/9i/network/admin/tnsnames.ora»
export NLS_LANG=»English_America.WE8ISO8859P1″
export ORACLE_BASE=»/u01/app/oracle»

I had trouble with norwegian characters using oracle 8.7.1 / php 4something and Apache 2.


The only trouble was that ‘?’ appeared instead of the norwegian characters.

The solution to it all was to add this to the apachectl script:

export NLS_LANG=»norwegian_norway.WE8ISO8859P1″
export ORACLE_BASE=»/home/oracle»
export ORA_NLS33=»/home/oracle/ocommon/nls/admin/data»
export ORACLE_TERM=»ansi»
export ORACLE_HOME=»/home/oracle»
export LANG=»no_NO»

I’m not sure if all of these are necessary, but I took no change, and it works now :)

Can’t compile php with Oracle 9i and apache on Solaris8?
Sun 280R

Using some of the tips below I had to add this:
(static build)

#!/bin/tcsh
setenv LDFLAGS -L$ORACLE_HOME/lib32

cd php-4.x.x/
./configure —with-oci8=$ORACLE_HOME —with-apache=/path/to/apache_src ..etc
make
make intsall

cd apache_src
(make sure environment variable is still set)
./configure «—prefix=/usr/apache» «—enable-module=so» \
«—activate-module=src/modules/php4/libphp4.a» . etc
make
make install

Having the gcc compilier build php against oracle 32 bit libraries was the key, but without setting LDFLAGS the compiler defaults to using the 64-bit oracle libraries which cause the famous
«. wrong ELF class: ELFCLASS64..» on startup.

The only diffenece here was I didn’t have to do play musical directories for it to work. The below post was instrumental in helping me to get this fixed. Thanks to «lore_giver at lycos dot co dot uk»

Running Oracle 9i on a
Solaris 9 (64 bit) platform with a Sun Server E250:
Apache version 1.3.27
PHP version 4.3.1

I was first getting «. wrong ELF class: ELFCLASS64..»
while doing a ./configure with the —with-oci8 and —with-oracle parameters.

After some unsuccessfull searched I renamed the $ORACLE_HOME/lib to $ORACLE_HOME/lib.org and then renamed the
$ORACLE_HOME/lib32 to $ORACLE_HOME/lib

Thereafter it went passed this config, but now failed on
not being able to find a libwtc9.so file which was in the
$ORACLE_HOME/lib directory (this message was displayed in the debug.log in the php source directory).

After setting the Environment variable:
LD_LIBRARY_PATH=$ORACLE_HOME/lib
I was able to compile without any errors and ‘make’ and ‘make install’ ran smoothly.

I only had to add the php type in the httpd.conf (in your apache conf directory eg. /usr/local/apache/conf)..
AddType application/x-httpd-php .php
to get the php to work again.

I had to then reverse the $ORACLE_HOME/lib swop on top since php was now having problems with the 32 bit version of the library. so switched it back to 64 and my php script worked.

Hope this helps some out there with similar problems..

Configuring/Compiling PHP as a DSO with Oracle support from source on a Sun Solaris 8 box. We had already installed Oracle 9.2.0 client tools.

1. Make sure the following tools are installed

autoconf
automake
bison
flex
gcc
make
gzip

2. Make sure Apache is installed with DSO support. We ran the Apache configure/compile like so:

LIBS=-lpthread ./configure \
—prefix=/usr/local/apache \
—enable-module=most \
—enable-shared=max

make
make install

3. If you haven’t already, install the Oracle client tools.
4. Make sure the following environment variables are set correctly and are accessible by all users. We set them in /etc/profile.

ORACLE_HOME
ORACLE_BASE
NLS_LANG
ORA_NLS33
ORACLE_TERM
LD_LIBRARY_PATH

(technically, only $ORACLE_HOME is required, but you’ll want to set the rest in order to make sure things run smoothly afterward)

5. Make sure ‘/usr/ccs/bin’ is in your path. If not, add it.
6. Unpack PHP source (php-4.2.3):

gunzip php-4.2.3.tar.gz
tar xvf php-4.2.3.tar
cd php-4.2.3

7. Run PHP configure like so :

CC=gcc ./configure —with-apxs=/usr/local/apache/bin/apxs \
—with-config-file-path=/etc \
—with-mysql \
—enable-ftp \
—with-oci8=/path/to/ORACLE_HOME \
—with-oracle=/path/to/ORACLE_HOME \
—enable-sigchild

8. Run make: make
9. Run this as root: make install
10. Change the LoadModule line in httpd.conf to include the fully qualified path. For us:

LoadModule php4_module /usr/local/apache/libexec/libphp4.so

11. Make sure the PHP files types are recognized in your httpd.conf file:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

12. Test the configuration:

It should return «Syntax OK»

13. Bounce Apache:

14. Here’s a simple PHP script to test the setup. If you don’t have access to the default tables Oracle provides, change the connections/tablenames/fields to match your setup:

= ocilogon ( «scott» , «tiger» );

$cmdstr = «select ename, sal from emp» ;
$parsed = ociparse ( $db_conn , $cmdstr );
ociexecute ( $parsed );
$nrows = ocifetchstatement ( $parsed , $results );
echo «Found: $nrows results

echo »

\n» ;
echo » \n» ;
echo »

\n» ;
echo »

\n» ;
echo «

\n» ;

for ( $i = 0 ; $i $nrows ; $i ++ ) <
echo »

\n» ;
echo »

» ;
echo »

» ;
echo «

\n» ;
>

echo «

Name Salary
» . $results [ «ENAME» ][ $i ] . « $ » . number_format ( $results [ «SAL» ][ $i ], 2 ). «

\n» ;

Oracle 9i and php 4.2.x in Linux
=================================
I want to share some experience in the instalation of php-oracle in linux.

My problem was the error: «Undefined ora_logon()» or «Undefined ocilogon()». And I had configured the php with-oracle and with-oci8.

* When you compile php, the php.ini create some extensions which are dll’s, but we are in linux :=|, so we have to search the modules for our plataform, by instance: php_oci8.dll for windows, in linux oci8.so (php 4.2).
* Don’t forget specify the ubication of php modules in php.ini. If you specify something shared in ./configure, this must be loaded as a module.
* Restart your http server, and enjoy with php.

keywords: NLS_LANG, NLS_CHARACTERSET,SetEnv,putenv()

If you have tried setting the environment variables — especially NLS_LANG — in PHP with putenv(), and perhaps also in Apache with SetEnv, and you are still having trouble with PHP+Oracle and foriegn character sets (you get e.g. ‘d’ for ‘?’), try setting the environment variables in your PROFILE (e.g. under bash) BEFORE starting the Apache server once more. This finally stopped the problems we were having. For reference, set the following variables:

ORACLE_HOME
ORA_NLS33
TNS_ADMIN
TWO_TASK
CLASSPATH
LD_LIBRARY_PATH
NLS_LANG

An example would be:

NLS_LANG=GERMAN_GERMANY.WE8ISO8859P15; export NLS_LANG

Then restart Apache (see below for important note).

Our system was Sun SPARC 5.8, running Apache 1.3.26 with PHP 4.2.2, and the OCI8 API for Oracle.

One further note: restart Apache with:

apachectl stop
apachectl start

otherwise your environment may not be reset.

Hope this helps someone!

If you still have ORA-12154 failed with Apache PHP on oracle8i
check
1.edit httpd.conf the apache starter user should the same user(and group) who install oracle(oracle:oinstall)

2.make apache starter .bash_profile the same with user who install oracle
3.and restart apache and php
4.make sure
$c2 = ocilogon(«scott»,»tiger»,$db);

the $db should the same with /etc/oratab SID

About PHP with win2000 and Oracle 8.

If you try to include oci8 extension and php hangs at that (without error messages), check your Oracle client version.

I had client for 8.0.5 but server was 8.1.7. This worked well with other apps but not with php4.2.2. Updating oracle client to 8.1.7 cured the problem.

Maybe oci8 extension doesn’t work with oracle 8.0.5 libs at all?

After days of head banging, here is the correct way to install php as an apache module with oracle support:

1) su — oracle_user
su root

//This way you assure that php will find oracle libs

2) On Apache’s source directory:

3) On PHP’s source directory:

./configure —with-oci8 —with-oracle —with-apache=../apache_src_dir —enable-track-vars —enable-sigchild

make
make install

cp libs/libphp4.a ../apache_src_dir/src/modules/php4

4) On Apache’s src dir:

./configure —prefix=/usr/local/apache —activate-module=src/modules/php4/libphp4.a

make
make install

5) On PHP’s src dir:

cp php.ini-dist /usr/local/lib/php.ini

6) Edit httpd.conf on /usr/local/apache/conf and add the following line (if doesn’t exists):

AddType application/x-httpd-php .php

This will make everything works, without two-task errors and stuff.

I installed Oracle 8.1.7 client, mod_php (4.2.2, as DSO) on a RedHat 7.1 (Seawolf) and among others encountered the «cannot find -lclntsh» problem during making. But the already suggested «shared,<$ORACLE_HOME>» solution didnt work for me.
I finally found a solution:

Usually, the linker (ld) complains, that it can’t find the clntsh .so / .a files, but they were present (check in the lib dir of $ORACLE_HOME if present, if not execute ../bin/relink as user Oracle and check what the error message says).

As I backtraced the incident, I found in the configure.log file the following lines:

configure: 2842 gcc -o conftest -g -O2 conftest.c -R /usr/lib 1>&5
gcc: unrecognized option ‘-R’
/usr/lib: file not recognized: Is a directory
collect2: ld returned 1 exit status

It turned out, that in the ./configure script it is checked, wether the compiler supports the -R option.
However, after I commented the lines responsible for this check and told the script, that my compiler wont support «-R» and as well doesnt need to check, after a make clean and ./configure it actually could be compiled.

You can find the lines I commented by searching for the regexp check.*-R. Comment from there till the next «else» and a «fi» a few lines below. Good Luck!

I spent several hours tracking down error ORA 24374, which would result from only *SOME* of my select statements. This error would be caused if I made a query that would return any non-numerical value. I am running an Apache 1.3.x webserver and PHP 4.2.1.

The fix is to add entries in your httpd.conf file that would export your environment settings. I added these three lines and everything worked like a charm!
SetEnv ORACLE_HOME /path/to/oracle/home
SetEnv ORA_NLS33 /path/to/oracle/home/ocommon/nls/admin/data
SetEnv NLS_LANG AMERICAN

Obviously, if your NLS_LANG is different, you should set it to whatever your NLS_LANG actually is. Ask your friendly DB admin for this information.

Hope this helps someone who treads down the path that I just followed!

Sometimes Oracle doesn’t cleanup shadow processes when accessed from PHP. To avoid that, check your
$ORACLE_HOME/network/admin/tnsnames.ora file in your Oracle Client directory and remove the (SERVER=DEDICATED) token if is set.

To let Oracle delete shadow process on timeouts, add the following line in your $ORACLE_HOME/network/admin/sqlnet.ora
found in your ORACLE Server directory:

Where ‘n’ is the number of minutes to let connection idle befor shutting them out.

Debian / Apache / PHP oci8 / Oracle

I just wanna tell my experience compiling the oci8 support from php debian sources. It gave me a lot of headache and I think it might be useful for others who use debian.

This is for debian woody (3.0), php 4.1.2, apache 1.3.24, oracle 8.1.7
(of course, it might be useful for other versions)

The Debian packages have not oci8 compiled in, so you must get the sources. Then I edited the debian/rules file and added the following:

ORACLE_HOME=my_ora_home_here
export ORACLE_HOME
LD_LIBRARY_PATH=/lib:/usr/lib:/$ORACLE_HOME/lib
export LD_LIBRARY_PATH

to the COMMON_CONFIG variable:
—with-oci8=shared,$

to the modules variable, just bellow the above:
oci8
(like . mhash, mysql, oci8, odbc . )

The «shared» keyword was the key for me. Before using it I was getting «ld: cannot find -lclntsh» on the compile time.

This way the compiling with dpkg-buildpackage went fine. If oci8.so does not show up in the modules directory after install, look php-source-path/apache-build/ext/oci8/.libs — it’s there.

If this still fails, look also to the oracle-stubs problem. Oracle is compiled against glibc 2.1 and woody comes with 2.2. But oracle gives some stubs libs for work-around the problem. I don’t know if this is necessary for the client libs, but I suggest trying. Look at Oracle docs.

Now things goes terribly fine here.
[]’s

Diego Morales,
Porto Alegre — Brazil.

Here’s a little snipet that shows how to insert multiple clob fields. Worked for me.

$dbh = OCILogon($dst_user_name, $dst_password, $dst_db_name);

for($i = 0; $i save ($resume[$i]);
@$clob2->save ($experience[$i]);
@$clob3->save ($comments[$i]);

// offset and limit feature for oracle 8 database selects

$conn = OCILogon ( «user» , «pw» , «server.world» );

$sql = »
declare
type c_type is ref cursor;
c_data c_type;
c_null tab.row_id%type;
begin
open :c_data for
select row_id from tab order by row_id;
while :c_data%rowcount ;

$stmt = OCIParse ( $conn , $sql );
$curs = OCINewCursor ( $conn );

$offset = 100 ; // dont fetch the first 100 rows
$limit = 10 ; // we want exactly 10 rows

OCIBindByName ( $stmt , «:c_init» , $offset , 32 );
OCIBindByName ( $stmt , «:c_data» , $curs ,- 1 , OCI_B_CURSOR );

OCIExecute ( $stmt );
OCIExecute ( $curs );

OCIFreeStatement ( $stmt );
OCIFreeCursor ( $curs );
OCILogoff ( $conn );

I had big problems to get an Oracle 7 server working with the OCI8 client and PHP under Linux, while connection to an Oracle 8 server worked great (In fact I got an ORA-01005 when connecting to Oracle 7). I see that more people have this problem, so here is the solution:

1. Make sure the NLS files are in your ORACLE_HOME subtree under $ORACLE_HOME/ocommon/nls/admin/data.

2. Make sure the ORA_NLS33 parameter is unset or alternatively pointing to the above directory ($ORACLE_HOME/ocommon/nls/admin/data).

3. Add «export ORACLE_HOME=/usr/local/oracle» (for example) to your apache startup script. This is important!! Adding this variabele in the httpd.conf OR in your PHP script will _NOT_ solve the problem: the directory has to be known before the Oracle library is loaded.

Thanks to Ron Reidy for helping to tackle this problem.

Tom Tsongas has a hint on compiling oci8 with Oracle 9i.
———————————

I built PHP with oracle and oci8 extensions.
I built it as a static module for Apache 1.3.20.
If you are getting errors from running ‘configure’ (something like it can’t
locate the Oracle libraries) its because the Oracle 8 library searched for is
hard coded as libclntsh.so.8.0 corresponding to the older oracle library.
If you create a symbolic link to the oracle 9 library as follows:

ln libclntsh.so.9.0 libclntsh.so.8.0

it will compile and build.

if you feel like you have too many oracle statements clouding up your php, i came up with a function to open a connection (if necessary), parse your sql statement, and return the executed query. after you call the function, you can do whatever needs to be done. makes like so much simpler: (do whatever you want with the errors)

if(!$connected) <
$connected = @OCIPLogon($ORACLE_USER, $ORACLE_PASS, $ORACLE_SID);

if($error = OCIError()) <
die(» ERROR!! Couldn’t connect to server! «);
>
>

$stmt = @OCIParse($connected, $query);
if($error = OCIError($cn)) <
die(» ERROR!! Statement syntax error! «);
>

@OCIExecute($stmt);
if($error = OCIError($stmt)) <
die(» ERROR!! Could not execute statement! «);
>

When using PHP4 in CGI-mode with Windows NT or Windows 2000 with IIS or Apache, make sure that the TNSNAMES.ORA and the SQLNET.ORA do not contain DOS/Windows CR/LF line endings.
Instead, they must have UNIX (only LF) endings. Otherwise, you will get an ORA-12154 error (TNS cannot resolve service name) when connecting to a remote database.

This all does not matter if you use the ISAPI mode.

When trying to compile PHP 4 with Oracle 8.1.6 support on a SuSE 7.0 system, make sure that you have added the following line to your /sbin/init.d/apache Skript, or you will get many many segmentation faults:
LD_PRELOAD=libclntsh.so.8.0
EXPORT LD_PRELOAD

Someone posted here a note that this is also required for RedHat 6.2. I can confirm this, both for RedHat and Suse (7.0).

Here’s a clue about rowid.

Don’t forget about the oracle functions:

«rowidtochar» and «chartorowid»

«select rowidtochar(rowid) as FOO from table . «

When you want to pass the rowid in a form or link, that’s
the only way to go.

couple of notes about startup/shutdown on linux: (redhat, maybe others)

Caused the start/stop script to fail to stop the httpd process.
The LD_PRELOAD environment var caused the ‘ps’ command to core dump. I went bald figuring that out.

Easiest fix I could think of was to move all the oracle/php varialble exports so they are only set in the start section of the httpd script.

Never thought setting those vars globally in the script would cause problems. That’s what I get for thinking.

One other note: Make sure the httpd process is shutdown before Oracle.

eg:
/etc/rc.d/rc0.d/K15httpd
/etc/rc.d/rc0.d/K25Oracle

Lingering connections to oracle may cause shutdown to take forever.

If you’re using OCI calls from apache/mod_php, and getting ORA-12514 errors, it’s important to make sure your ORACLE_HOME environment variable is defined when you start apache. If you use /etc/rc.d/init.d/httpd to start apache, simply put the environment variable definition in there.

This ORA-12514 error is baffling, because there isn’t any such error code. It actually should be ORA-12154 (but there’s an error-code transposition somewhere in Oracle 8.1.5.0.2, on Linux).

������� ��� ������ � Oracle

append» HREF=»/php/007/function.oci-collection-append.html»>


����������� �� PHP
����. ����.

XCVI. ������� ��� ������ � Oracle

��� ������� ��������� ��� �������� � Oracle ������ 9/8/7. ��� ����� ������������ ���������� Oracle Call Interface (OCI).

������ ������ ����� ����� ��������. �� �������� ������� �������� ���������� PHP � ��������������� ������ Oracle, ����������� ��������� LOB, FILE � ROWID. ������������� ����� ������ ������������� ������ ������� ������.

��� ����������� ���������� ���������� Oracle ��� ����, ����� ������������ ���� ������. ������������� Windows ����� ��������� Oracle ������ ������� 8.1 ��� ����, ����� ������������ php_oci8.dll .

����� �������������� ����� ������, ���������, ��� �� ���������� ��� ����������� ���������� ���������. ��� ����������, ������������� ����, ������ ���� �������� ������������ Oracle � ������������, � ������� �������� �������� ���-������. ���������� ���������, ����������� ��� ���������� ������ � Oracle:

����� ��������� ����� ��������� ��� ���-�������, �������� ������������, � ������� �������� �������� ���-������, � ������ oracle.

���� ��� ���-������ �� �������� ��� ���������� ������ ��� ������: ���������, ��� Apache ��� ��������� � ����������� pthread :

���� libpthread �� ������������ � ������, �� ��� �������� �������������� Apache:

�������� �������� �� ��, ��� �� ��������� ��������, ��������, UnixWare, ������ libthread ������������ libpthread . PHP � Apache ����� ������ ���� ������� � EXTRA_LIBS=-lthread.

PHP ������ ���� ��������������� � ������ —with-oci8[=DIR] , ��� DIR ������������� ����������, � ������� ��������� ������������� ����� ������ �/��� ������ Oracle. �� ��������� �������� DIR ������������� ���������� ��������� ORACLE_HOME .

���� �� ����������� Oracle Instant Client, �� ��� ��������� ������ OCI8 �����, ����� PHP ��� ��������������� � ������ —with-oci8-instant-client[=DIR] . �������� ��������: ��������� Oracle Instant Client ��������� ������ ������� � ������ 4.3.11 � 5.0.4.

������ ���������� �� ���������� ������� ��������� ������������ � php.ini .

������������� ���� ��������� ���������� ������ ����������� � ����� ���� �������� ������ � ��� ������, ���� PHP ��� ������ � ���������� ����� ���������� ��� �� � ��� ������, ���� ������ ���������� ������������ �� ����� ����������.

����� ���������� ��������� SQL. � ���� ������ ���������� �� ����������� ������������� ���������� COMMIT.

����� ���������� ��������� SQL. ����������� ���� �����, ���� �� ������ �������� ������ � ���������� �������, � �� ��������� ��� ������.

����� ���������� ��������� SQL. ���������� ������������� ����������� ������� ��������� COMMIT ����� ���������� oci_execute() .

����� ��������� ����������� �������. ������������ � ��� ������, ���� ���������� �������� ������� ������� ����� ����� �������� � ����������. Oracle 8 � ����� ������� ������ �� ���������� ������� ����������� � ����������� � ���� ������, � ������� ������������ ������������� ����� ������� ���������� ���������� �����, ��� ����� ��������� ���������� ������� � ��������.

������������ �������� oci_bind_by_name() ��� �������� ���������� ���� BFILE.

������������ �������� oci_bind_by_name() ��� �������� ���������� ���� CFILE.

������������ �������� oci_bind_by_name() ��� �������� ���������� ���� CLOB.

������������ �������� oci_bind_by_name() ��� �������� ���������� ���� BLOB.

������������ �������� oci_bind_by_name() ��� �������� ���������� ���� ROWID.

������������ �������� oci_bind_by_name() ��� �������� ��������, ��������� ����� � ������� oci_new_cursor() .

������������ �������� oci_bind_by_name() ��� �������� ����������� ����� ������. � PHP OCI_B_SQLT_NTY .


�� ��, ��� � OCI_B_BFILE .

�� ��, ��� � OCI_B_CFILEE .

�� ��, ��� � OCI_B_CLOB .

�� ��, ��� � OCI_B_BLOB .

�� ��, ��� � OCI_B_ROWID .

�� ��, ��� � OCI_B_NTY .

������������ � oci_fetch_all() � oci_fetch_array() ��� ��������� �������������� �������.

������������ � oci_fetch_all() � oci_fetch_array() ��� ��������� ������� � ��������� ���������.

������������ � oci_fetch_all() � oci_fetch_array() ��� ��������� ������� � �������������� � ��������� ���������.

������������ � oci_fetch_array() ��� ��������� ������ ��������� �������, ���� ��������������� ���� � ���������� ����� NULL .

������������ oci_fetch_array() ��� ��������� ���������� ������� LOB ������ �����������.

���� ������������ oci_new_descriptor() ��� ������������� ����������� ���� FILE.

���� ������������ oci_new_descriptor() ��� ������������� ����������� ���� LOB.

���� ������������ oci_new_descriptor() ��� ������������� ����������� ���� ROWID.

�� ��, ��� � OCI_DTYPE_FILE .

�� ��, ��� � OCI_DTYPE_LOB .

�� ��, ��� � OCI_DTYPE_ROWID .

������ 1. ������� �������������

// Use option: OCI_DEFAULT for execute command to delay execution
OCIExecute ( $stmt , OCI_DEFAULT );

// for retrieve data use (after fetch):

$result = OCIResult ( $stmt , $n );
if ( is_object ( $result )) $result = $result -> load ();

// For INSERT or UPDATE statement use:

$sql = «insert into table (field1, field2) values (field1 = ‘value’,
field2 = empty_clob()) returning field2 into :field2″ ;
OCIParse ( $conn , $sql );
$clob = OCINewDescriptor ( $conn , OCI_D_LOB );
OCIBindByName ( $stmt , «:field2» , & $clob , — 1 , OCI_B_CLOB );
OCIExecute ( $stmt , OCI_DEFAULT );
$clob -> save ( «some text» );
OCICommit ( $conn );

�� ������ ������������ �������� ��������� ��� ��, ��� ��� �������� �� ��������� ������.

������ 2. ������������� �������� ��������

������������ ������

��� ���� ������

VARCHAR2

2000 bytes

NUMBER

21 bytes

2^31 bytes

ROWID

6 bytes

7 bytes

255 bytes

LONG RAW

2^31 bytes

255 bytes

MLSLABEL

255 bytes

������� ���� ������

���������� ������ ������� ����� ������, �������������� ��������. ������� ���� ������ ���� ����� ���������� �����. ����� ���� ���������� ORACLE ������� ��� ��������������� ���� ��� ���������� ���������� � ��� ����������� �������� �������. ��������, ���� �� ������ ������������� ���������� ��� NUMBER � ������ ��������, �� ������ ������� � ������ ������� ODEFIN ������� ��� ������ VARCHAR2 (��� = 1). ���������� ���������� �� ����������� ���������� � ������� ���� ������ ��� ���������� ������� ����������.

������ ����������� ��� �������������� �����, ���� �� ����������� ��������� ���� � ���������� ����� ������ DATE �������� ���������� ������ �My Birthday�, � �� �04.12.69�, �� ��������� ������ ������� ����������.

������� ���� ������ ������������ � �������:

������� ���� ������

���� ������ ������ �������� ������

CA-Visual Objects

Delphi

VARCHAR2

char[n]

DIM [n] AS BYTE

array [0..n-1]of char

NUMBER

unsigned char[21]

DIM [21] AS BYTE

array [0..20]of char

8-bit signed INTEGER

signed char

16-bit signed INTEGER

signed short

SHORTINT

SMALLINT

32-bit signed INTEGER

signed int, signed long

INTEGER

FLOAT

float, double

FLOAT, REAL8

FLOAT

Null terminated STRING

char[n+1]

Pchar

VARNUM

char[22]

DIM [22] AS BYTE


array [0..21] of char

char[n]

DIM [n] AS BYTE

array [0..n-1] of char

VARCHAR

char[n+slen]

DIM [n+slen] AS BYTE

array [0..n+slen-1] of char

ROWID

char[n]

DIM [n] AS BYTE

array [0..n-1] of char

char[7]

DIM [7] AS BYTE

array [0..6] of char

VARRAW

Unsigned char[n+slen]

DIM [n+slen] AS BYTE

array [0..n+slen-1] of char

unsigned char[n]

DIM [n] AS BYTE

array[0..n-1] as char

LONG RAW

unsigned char[n]

DIM [n] AS BYTE

array[0..n-1] as char

UNSIGNED INT

Unsigned

LONG VARCHAR

char[n+ilen]

DIM [n+ilen] AS BYTE

array [0..n+ilen-1] of char

LONG VARRAW

Unsigned char[n+ilen]

DIM [n+ilen] AS BYTE

array [0..n+ilen-1] of char

char[n]

DIM [n] AS BYTE

array [0..n-1] of char

CHARZ

char[n+1]

Pchar

CURSOR VARIABLE

struct cda_def

struct cda_def

struct cda_def

MLSLABEL

char[n]

DIM [n] AS BYTE

array [0..n-1] of char

// by webmaster at remoterealty dot com
$sth = OCIParse ( $dbh , «begin sp_newaddress( :address_id, ‘$firstname’,
‘$lastname’, ‘$company’, ‘$address1’, ‘$address2’, ‘$city’, ‘$state’,
‘$postalcode’, ‘$country’, :error_code );end;» );

// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable.
// Then you do the binding:

OCIBindByName ( $sth , «:address_id» , $addr_id , 10 );
OCIBindByName ( $sth , «:error_code» , $errorcode , 10 );
OCIExecute ( $sth );

��������������� ��������� oci8

ORACLE CALL INTERFACE (OCI)

������ ��������� ����������

Structured Query Language (SQL) — �� ����������� ����. ��������� �� �� ����������� ����� ���������� ����� �������� � �������, �� ����� ������� ����� ��������� �� ��� ���� �������� ��� ����� ������� �������� ����������� ���������� ���������� ������� ��������� �� ������������ �����. �� ����������� �������� SQL ������ ��� ����� ������ � �������� � � ������������� ��� �������� � ���� ������. ������, ����������� ������, �� ������� ������� �������, ����� ���������� � ������ ������, �������� ������������, ����� ���� ��������-����������������. ���������� �������� ����������� ������ ������� �� ����������� ���������� ���������� ��� ����������� ����������. ��� ���� ����� � ������ �������� ������ ������� ����������� ����������� ������, ���������, ������� � �.�. ����������� �������� ������ �������� ������ ������ �� ����� ��������, ��� SQL, �� ������ � ��� ����� ������� � ����� �������. OCI ��������� ��� ������������� ���������� ���������, ������� ���������� ������������ �� ������������ ����� SQL � ������������ ������������ ����� �������� ������. ��� ������ OCI �� ������ ����� ������������ ����������� ���������� SQL — PL/SQL. ����� �������, ���������� ���������, ������� �� ��������������, ����� ���� ����� ������� � �������, ��� ���������, ���������� ������������� �� PL/SQL ��� ������ SQL. �� ������, ��� �������� ������ ��������� ����������, ����� ��� �� ��������� ������������ ������ �����������. ��� �����������, ��������� ������ ����������� � ���� ��� ��������, ����������� ��� ������� ��� ��� ���� ������.

OCI — ��� ����� ������������ �������, ����������� �������������� ��������� ORACLE �������. ���������� �������, �������������� OCI, ��������� � ���� Windows DLL ����������, � ������� �������� ��� ����� ������ ����������������, ��������������� �� ������������ ������� Windows. �� ������ �� ���� ���-���� ������� ��� DOS?� ����� ���������� — ��� ������ ORACLE 7.3.3 ���, � ���� �� �����. ��� ��� �������� ORACLE �������� ���, ������� � ������ 7.3, ������������ ������� DOS �������������� �� �����. ������ �� ���� ������� �� �� ������� �������������� ORACLE ��������, ��������, �� CLIPPER ��������, ��������� CLIPPER ��������� �������� DOS ������������. �, ��������, ������ ������ CLIPPER-�����, �� ��� ������ ������.

OCI ������������ ����� SQL ����������� ������, ��������������� �������, ����� ������� �� ������, �������� ���������� ������������ — ���, ��� �������� � ORACLE 7 �������.

�� ����� ������� OCI ��������� ��������� �����, ���������� �� PL/SQL ����������������� �����.

��������� �������� � �������������� OCI

�������� ��������� ��������� � �������������� OCI.

����� �� ������ ����� ���������� � �������������� Oracle Call Intrface (OCI), ��� ������� �������������� �����, ����������� ����, ��� ������ ����������� ���������� ������ ������ ����������. ��� ������� ���� OCI ��������� ������ ��������� ��������� ����:


    • ��������������� ������ ��� ��������� ������, ����������� ��� ���������� (connect) � ORACLE �������
    • ����������� � �������� ��� ����������� ���������
    • ������� ���� ��� ��������� �������� ��� ���������� SQL ��� PL/SQL ������
    • ��������� SQL ��� PL/SQL �������, ����������� ��� ������ ����������
    • ������� �������
    • ������������� �� ���� ������ (disconnect)

��������� ������ OCI ����������.

� OCI ���������� ��� ���������� ��������������� ������ ��� �������� ������, ����������� ��� ���������� � ORACLE ��������� ���������� SQL ����������� � PL/SQL ������. ��������� ������, ������� �� ������ ������������ ��� ���������� � ��������, ���������� logon data area (LDA) � host data area (HDA) . �� ������ �������� ���� ���� LDA-HDA �������� ��� ������ ������� � ���� ������ ORACLE. �� ��������� ������ �� ��� ��������� � ����� ������� OLOG, ������� � ���������� ��� ������ �� ���������� � �����.

�� ������ �������� ������������ ���� LDA HDA. ������ ������������� ����� � ���� ����� ����� ������� (disconnect).

��� ����, ����� ��������� SQL ����������� ��� PL/SQL ����, ��� ���������� �������� ������ (cursor) . ������ ����������� ��� ������ ��������� ��� ��������� cursor date area (CDA) . ��� ������� ������� ���������� ��������� CDA. ������ ����������� ����������� ������� OOPEN, � ������� ���������� ������ �� ��������� CDA � �� ��������� ���������� LDA. ����� �������, ������ ������ ������������� � ����������. �������������� ���������� ������� ������������ ����� �������������� ������ �� ������� ��� ���������� SQL ����������� � ������������� ���������� ���������. � ����� ���������� �� ������ �������� ��������� �������� ��� ���������� ��������� SQL �����������. �� ������� ������� ������ ����� ������ � ���, �� ������� ����, ��� ������� ��� ����������������, �� ������ �� ��, ��� ������ ��� ��������� ������� ����� Disconnect-��. ����� �������� ������� �� ������ ������������ �������� ��������� CDA ��� �������� ������� ������� ���� � ������ �������.

���������� ��������� LDA � CDA ���������� ���������. � ���, � ��� ���� ���� ��� ��������� return code (rc). � �� ���� �������� �������� 16-������ ���������, �������� ��� ������ � ������ ������������� ���������� OCI ������, ���������� � LDA ��� CDA ���� 0, ���� ����� ������ �������. ��� ���������� �������� ������ ����� ������������ ������� oerhms ���� oermsg.

Logon Data Area (LDA)

Logon Data Area (LDA) ���� ���������, ������� ������������� � �������� �������� � ���� ������ ORACLE ����� ����� OLOG. ������ ��������� LDA ��� �������� 32 ��������� ������� �������� �� �����:

������ ��������� LDA � �������� � ������ ����� ������� �� ��������� (��������-��������� ���������). ������, ��� ���� ������������ ��� ���� ������. ��� Windows 95 ��������� LDA ������������ ��������� (ocidfn.h):

sb2 v2_rc; /* V2 ��� �������� */

ub2 ft; /* SQL ��� ������� */

ub4 rpc; /* ���������� ����� */

ub2 peo; /* �������� ������ parse */

ub1 fc; /* ��� ������� OCI */

ub1 rcs1; /* ����������� */

ub2 rc; /* V7 ��� �������� */

ub1 wrn; /* ���� �������������� */

ub1 rcs2; /* ��������������� */

sword rcs3; /* ��������������� */

sword ose; /* ������ ������������ ������� */

dvoid *rcsp; /* ��������� �� ���. ������� */

ub1 rcs9[CDA_SIZE — sizeof (struct cda_head)]; /* �����. */

sb2 v2_rc; /* V2 ��� �������� */

ub2 ft; /* SQL ��� ������� */

ub4 rpc; /* ���������� ����� */

ub2 peo; /* �������� ������ parse */

ub1 fc; /* ��� ������� OCI */

ub1 rcs1; /* ����������� */

ub2 rc; /* V7 ��� �������� */

ub1 wrn; /* ���� �������������� */

u b1 rcs2; /* ��������������� */

sword rcs3; /* ��������������� */

sword ose; /* ������ ������������ ������� */

dvoid *rcsp; /* ��������� �� ���. ������� */

#define CDA_SIZE 64

��� Windows 95 (OraTypes.h):

ub1 unsigned char

sb1 signed char

ub2 unsigned short

sb2 signed short

ub4 unsigned int

uword unsigned int

sword signed int

� ����� ocidfn.h ���������� ��������� cda_def, ���������� ��������� lda_def ���� ������ ��������������� ������ ���� �� ��������� cda_def:

typedef struct cda_def Lda_Def;

� �����, �������� ������������ ���� ��������� Lda_Def ���� ��� �������� (rc). ��� OCI ��������, ����������������� � �������� ������ 7.3.3, �� ����������� ���� ���� �������� V2� (��� ������ ������). ��� ���� ��������� ��� ������������� OCI �������� �� ������ ������� �������.

������ ������ ���������: ������� ������, ���������� LDA � HDA ���������, ������ ���� �������� . ��� ������, ��� ���� ���������� ������ � ����� , �� ���� ��������� �� ����� ���� ���������� � ������.

Host Data Area (HDA)

Host Data Area (HDA) — ��� ������ 256 ����, ������� �� ������� ��������������� ��� ������� ������� � ORACLE ��������. �� ������������ LDA � HDA ��������� � ����������� ������ ��� ������� ������� � ����� � ��������� ������ �� ��� ��������� � ������� OCI, �������������� ����� — OLOG.

����� HDA 256 ���� ������ ��� 32 ��������� ������, � ����� ��� Win 95 � Win NT. � 64 ������ �������� ��� ������� �������� 512 ����. ��� �� �����, ������, ��� ������ OCI ����������, ����������� ��������� � ������������ ORACLE ��� ����� �������, ����� ��������� � ������� HDA. ���� � ��������� 32 ��������� �������� ������ ���� ������� ����� ���� 512 ����. ����� � ����� ������� HDA 512 ���� ��� ����� ������� — ��� ����� �������� ����������� � ������������� ����� ���������.

������ ������ ���������: HDA ������ ���� ��������� ��������� � ���������������� �� ����, ��� ��� ����� ������������ � OCI ����������. HDA ������ ���� ������������������� 0 (�������� �����, �� �������� �0�) ����� ������ ������� OLOG, ����� �������� ������ ����������.

Cursor Data Area (CDA)

Cursor Data Area (CDA) — ��� ������� ������, ������� ������������ ����������� ���������� ����� ����������� �������� � �������� ������ ������� ��� ���������� SQL ���������. ���������� � ����������� SQL ��������� ����������� � system global area (SGA) � � ������� SQL �������. ��� ������ ORACLE �������� SQL ���������, ���� CDA ������������� ����������� ����� �����������, ��������������� ��������������� ���������� ������������ ���������. ���� CDA ���������� ������ � �������� ���������� SQL ���������. ��������� CDA � �������� ����� � ���� ��� ���� ������������, ���������� ��� �������� ��������� �������:

������ �������� ����� ��������� �� ������ ����� ��� ������. �� ��������� ����������� � ORACLE ������������.

���������� SQL �����������

��� ��������� �������� �� ������� ������ ������� � �������������� ���� ��� ����� SQL ���������. ���������� 8����� SQL ��������� � ORACLE 7

? ���� ����������� ������ (Data Definition Language DDL)

? ����������� ��������� (3 ����)

? ���������� ������������ (Transaction Control)

? ���������� �������� (Session control)

? ���������� �������� (System control)

? ���� ��������������� ������� (Data manipulation Language DML)

? ���������� SQL (Embedded SQL)

������� ������������ �������������� ��� ��������� ��� ������������� OCI. ����� ������� (Queries) �������������� ��� DML, �� � OCI ���������� ��� ����� ������.

���������� ����� �������� ��� ���� SQL ���������:


    • ���� ����������� ������ (Data Definition Language DDL)


��� ��������� ��������� ���������� � ���� ������. DDL ��������� ������� ����� �������, ������� ������ � ��������� ������� ��������� � ����� ���� ������. ��� ������ ������ DDL ����� ������������ ������ � �������� ���� ������������� (��������� ���� � ����������). ������:

CREATE TABLE wine_list (name CHAR(20), type CHAR(20), year NUMBER(4),bin NUMBER(4))

DROP TABLE wine_list

GRANT UPDATE, INSERT, DELETE ON wine_list TO scott

REVOKE UPDATE ON wine_list FROM scott


    • ����������� ���������


OCI ���������� ����� ������������ ���������� ������������, ���������� �������� � ���������� ��������. ��� ����� ��������� ���������� ���������� � ������������ ORACLE 7 Server SQL Reference


    • ���� ��������������� ������� (Data manipulation Language DML)


���� ��������������� ������� (DML) ������ ��� ��������� ����������� ������ ���� ������. ��������� DML ����� ��������:

  • INSERT � ��� ��������� ����� ����� � �������
  • UPDATE � ��� ����������� ������������ ����� � �������
  • DELETE � ��� �������� ����� �� ������
  • LOCK — ���������� ������ ��� ������ �������������
  • EXPLAIN — �������� ����� ���������� SQL ���������

DML ��������� ��� ������������� �� � OCI ��������� ����� ����� ���������. ��������� ����� ������� � ����������� ������ ����� ���������.


    • PL/SQL


PL/SQL — ���� ����������� ���������� ����� ORACLE SQL. ���������, ���������� �� PL/SQL, �������� ����������� ������� ���������, ��� ��������� ����������� SQL. PL/SQL ��������� ��������� ����� ��������� SQL ����������� ����� ������. � PL/SQL ������ ��������� �����������:

  • ���� ��� ����� SQL ���������
  • ����������� ����������
  • �������� ����������
  • ����������� ����������� �����, ����� ��� IF-THEN-ELSE, � �����
  • ��������� �������������� ��������

��� ������������� PL/SQL ������ � ����� ����������� �� ����� ������:

  • �������� �������� �� ������� ��������� � �������
  • ������������� ����������� ����������� ����������� � SQL ������������� ��� ���������� ����� ����� � ����� �����.
  • �� ��������� ������ � ����������� ������������ ����� PL/SQL, ����� ��� — �������, ��������, CURSORS FOR loops, � ���������� �������������� ��������.
  • ������������� ���������� ��������.
  • ������� (Queries)


������� � ��� SQL ���������, ������� �������� ������ �� ���� ������. ������ ����� �� ���������� ������, ����� ���������� ������ ���� ������, � ����� ����� ����� �����. ��� ������� ���������� � SQL ��������� SELECT. ������� ����� ������������� ��� DML ������������ ����� SQL, �� � ��������� OCI ���������� ��� �������� ������ ����������� SQL.


    • ���������� SQL ���������


���������� SQL ����������� ������ � �������� ������������� ������������ ����� �������� ������. ������������ ��������� ���������� SQL � ������ OCI �������.

���� ���������� SQL �����������

��� ��������� OCI ���� ��� ���������� SQL ����������� ���������� ����������� ��������� ��������� �����, ������, ���������� ����� � ������ ������ ����. ��� �������� ���� PieceWise (����������, ����������� � ���������� ������ � ���� ���� LONG � LONG RAW �� ������) ��������� ������� �����, ������� ���������� ��� ���������� ����� ������ (������ ����� ��������� ������� �� 2 MB).

����� ������� � ����� ������ � �������� ������� �������� ���� �� ���������� SQL ��������� ���������:

  1. ������� ������ SQL ���������, ��������� ����� OPARSE. ������� OPARSE �� �������� ������� ��������� �������� � SQL ��������� � �� �������� ��������� ���������� SQL ���������. ������ SQL ��������� ����� ���� ����� ��������� �� ������� � ��� ������, ���� OCI ���������� �������� � �� ���������� ������ ( non-deferred ) ��� � ������ ��������� ��������� ������� OPARSE DEFFLG � �� 0. ������� ���������� ��������� SQL ��������� �� ���������. RALLBACK ��� COMMIT ����� ��������� ����� ����� OP ARSE.
  2. ��� DML ��������� � ��������, ���� ���� ���� ���������� ���������, ���������� ��������������� ��������� OBNDRA, OBNDRV, OBNDRN ��� OBINDPS ��� ���������� ������� ���������� ������ � ����������� � SQL ����������. � �������� ������� ���������� ����� ���� ������������ ������ ��������� ��������� ��������. �������� ������ ������� ����� ���� ������������� — OBINDPS. ��� �������� ������ � ���������� ������ ����������, �� ��������� ��������� � SQL ���������� ������� �������� � ������������ �������� ���� Pie ceWise.
  3. ��� �������� ���������� ������� ��������� ��������� ���������. ���� ���������� ������� ODESC. ���������� ���� ��� �� ����������, ���� �� ������ ���� �������������, ��� ������ ���������� � ���������� ���������� SQL ��������� ��� �� ������ ����������. �� ���� ��������� ������� ODESC ����������, � ���������, ���� �� ������ ��������, ��������, ����� ����� ���������� ����� SQL ���������. ��� ������� ������� �������� ������� ��� �� �������� ODESC ������ ������ ����������.
  4. ��� �������� ������ ������� �������� ������� ���������� ������� � ������� ����������, � ������� ��� ����� ����������. ��� �������� ��� ������ ������� ODEFIN ��� ODEFINPS. ��������, ����������, ��� ����, ��� �� �� ������ ������������ ODEFIN ��� ODEFINPS ��� ����������� �������� ���������� � ��������� PL/SQL ������, ������ ����� ������ ���� ������������ ������� OBNDRV ��� OBNDRA. ������� ODEFINPS ����� ���� ������������ ������ � ���������� ������ ������ � ��� ������������� ���������� PieceWise �������� � ���������� �������� ������� � �������� ��������.
  5. ��� DML ��������� � ��������� ���������� ������������ ����������� OEXN ��� ���������� SQL ���������. ���� ������ SQL ��������� ��� ����������, �� ���������� ���������� ������ �� ���� ����.
  6. ��� �������� ��������� OEXFET ��� ���������� OEXEC � OFETCH. ��� �������� � ���������� ������� � ���������� �����, ��������������� �������. ���� �� ��� ������ ��������� �� �������������� ������� ����� ������ OEXFET, ��������� OFEN �� ������� �������� ���� �������.

� ���������� ������ ���������� ������ ������� ������ �������� ��������� �� ���� ������ ORACLE.

���������� ���������� SQL �����������

�� ������ � ���� ORACLE 7 ������ (Release 7.0) ������ ����� OCI ��������� �������� ��������� �� �� ������ � ����������� ���������� �� ���. ��� ������� SQL ����������� ��� ������ ������ OSQL3 ����� SQL ��������� ���������������� �� ������, ���������� ����������� � ����������� � ���������� ������ ��������� (process global area (PGA)). ������ ������� ���������� ������������ � ������ ��� ������������� � ��������� ������� ���������� (��������� ���� Par1, Par2 � �.�.), ����������� � SQL ���������, ������, �� ������ ���������� ��������� ���� ����� �������. � ���������� �� ����� ��� �������� ��������� ���� ����� ������� ��� ���������� ����� ������� �������������� ������� � ����� �������� ����������. � ����������, ��� ���������� SQL ���������, ORACLE ������� �� ���������� ������� �������� �������� ��� ������ ������� ���������� � ��� �������� ���������� ���������. ��� ��� �������� � �������������� ������� �������.

����� OCI ���������� � ORACLE ������ �������� �� ����� ������ (Personal ORACLE), ��������� ������� ������� �������� � �������������� ��������� ��� ���������� ���������. � ���� �� ��� ����������� ��������� (������ � ������ ����� ���� ��������� �� ������ ���������� ���� �� �����). � ���� ������ ��������� �������� ����� ���� ����� ����������.

��� ������ � ��������� ��������� � ORACLE 7 ���� ������� ���������� ���������� ������ ��� ���������� ����� ������ ���������� SQL �����������. ��� �������, �� ������ �������� ����������� ������, ���������� ������� � �������� ���������� �� ������ ���������� ���������� SQL ���������. ���� �� ��������� �������� ��������������� ��������� (ODESCR), ��� �������� �� ���������� SQL ������� � ��� ���������� ����� ���� ������� �� ���� ��������� � �������.

���������� OCI ����������

���� ������ �������� ��������� ��������� ���� ��� ���������� OCI ����������:


    • ����������� �������� ������ ��� OCI ���������� (LDA, HDA, CDA)
    • ���������� � ��������
    • �������� �������
    • ����������� ������ SQL �����������
    • ���������� ������� ������� ����������
    • �������� ���������� ������� ��������������� ������
    • ���������� SQL ���������
    • ����������� ������� ��������������� ������
    • ���������� ����� ������ ��� ��������
    • �������� �������
    • COMMIT ��� ROLLBACK
    • ������������ �� �������

����������� �������� ������ ��� OCI ���������� (LDA, HDA, CDA)

�� ������������� � ORACLE ������� ���� ���������� ������ ���������� ���� �� ���� ���������� �� ���������� LDA. ���� � ����� ���������� ����� ������������ ������������ ��������� ���������� (����� ���� ���� � ���������� ���������) ��� ������� ���������� ���� LDA ��� ������� ����������. ����������� LDA ������� �� ����� �������� ������, �� ������� �� ������ OCI ����������. �� ��� �� ������� ���������� HDA ��� ������� LDA. ���� ���� LDA/HDA ����� ������������ ��� ������ �������.

��� ���������� SQL ����������� ��� �����������, �� ������� ����, ���� ��������� CDA, ��� �������� ���������� �� �������� �������. ���� �� ������������ ����������� ��������� ��������� SQL ���������, �� �� ������ CDA �� ������ �������� ������.

���������� � ��������

���������� � ����� ��� ����������� ��������� � ���� ��������� �������������� ����� ����� ������� OLOG. � �������� ���������� ������������ ������ �� ��������� LDA � HDA. ������ ���������� ������������� ���� ���� LDA/HDA, ������������ � ������� OLOG. ����� �������, ���� ����� OLOG ������������� ������ ����������. ��������� ����� OLOG �������� � ������������ ��� ������������� ������� �� ���� LDA/HDA � ������ ����������.

����������� ���������� � ��������

� ������������ ����������� ������������ �� ������ �������� ������ � ����� ����� ������. �� ������ ������� ��������� �������� � ����� � ��� �� ����, �� ������ � ����, ��� ORACLE ������� ����������, ����� ����, — ��� ���������� ������������� ��������.

���������� ��� ������ ���������� � ORACLE �������: bloking � non-bloking . � ������ bloking��� ������ OCI �������� ���������� ����� ��������� ���������� ������ ����� ����, ��� ���������� OCI �������. ��� ���� ������� ��� ��� ��������� ���� ������ — ��������� ��� ������� ������� ������. ��� non-bloking ������ ���������� OCI �������� ���������� � �������, ������� ���������� ����� ��������� ���������� ����� �� ����� ������ OCI �������. � ���� ������ ���� ���������� �����, ��������, ������� ��� ������ �� ������, � ������ �������� ������ �� ������� �� ������ ������.

��� ���������� SQL ��������� �� ������ ������� ������. ��� �������� ������� �� �������������� ����� ����� ����������� ������ �� �������, ��� ������ ������� ������ ��������� SQL ��������� � CDA ���������� � ����� ����������. ��� ���������� ���������� �� ������ ������� OOPEN. �������� ������� ������� ���������� � ���������� � ��������. ����������� ��� �������������� ����� �������� � ������� OOPEN ������ �� ��������� LDA, �������� ���������� � ����������. ����������� LDA ������ �������� ����� ���� � ������ OLOG.

������ �������� ������ � OCI ���������� ������������� � ��������/����� ������. � ������, ���� OCI ���������� ����� ��������� ����������, ����� ���������� ��������, �������� � ����� ���� ������ �� ������ ��������� �������� OPEN_CURSORS � ���� ���� ������.

�� ������ ������������ ������ ��� ���������� SQL ����������� ������ � ���� �� ����� ���, ������ ������������ ��� ���������� ��������� SQL �����������. ����� ������ ������������ �������� � ������ SQL ����������, ��������� CDA ��������� ������������� ����� ��������� ��� ����������� ������� ������ SQL ���������. ��� ����� ������ �� ����������� ��������� ������ � ��������� ����� ������. ����� ����, � ��� ������ �� ���������� ���� ����������.

����������� ������ SQL �����������

����� SQL ��������� ������ ���� ����������� ������������ ������� �� ������� ��� ������ ������ OCI ��������� OPARSE. ������� � ������, ��� ���������� � ���� ����� — ��� ������ �� ��������� CDA (�������� ������) � ���������� ����� ������ SQL ���������, ������� ������� �������. � ��� ����� �������� �������� �� ���� ������ ������� � ����������, ��� �������� �������� ������������� OCI.

DDL ��������� ����� ���� ��������� ����� ����� ������� ���������, � OEXEC �� ���������. ��� ����������, ����� ��������� ������� � ������ non-deferred (�� ����������) ��� ���� �� ������� ���� DEFFLG, ������ 0 ��� ������ OPARSE. � ����� ������ ������ ��������� ����� OEXN ��� OEXEC ��� ���������� ���������.

���������� ORACLE ����������� ������������ ���������� ����� ���������� SQL ��������� �� ���� �������, ��� ��� ��������. ��� ������ �������� ���������� ���������, �������� � ������� �����. ����� �������� ��� ����, ���, ��������� ������ � ���������� �������� ����� ���� �������� ������ �� ������, ���������� ����������, � ������� �� �� ����������� ��������. ��� DML �������, PL/SQL �����, � ������� ������� �������������� ��������� ����� ����� ������������ ������� � ����������.

���������� ������� ������� ����������

����������� DML ������ � ��������� ������� (� ��������� �� �������, �������� WHERE �����������) ������� �� ��������� �������� �� ORACLE ������ �� ������ ������ SQL ���������, �� � ��������� ������� ����������, ����������� ��� ��� ����������.

������ � SQL ��������� ����� ������� ��� ��������. ��� ����� �������, ����� �� ������ ��� ������ ��� �� ������ ����������. �� ������, ��������, ��������:


INSERT INTO wine_list (name, type, year, bin_no) VALUES(�Joseph Swan Vineyards�, �ZINFANDEL�, NULL, 112)

��� �� ������, � SQL ��������� ��������� �������� ���������������, � �������� ���������: �ZINFANDEL�, NULL, 112

����������� ��� �������� ���������� ����� ���������. ���� �� �������� �������� ���������, �� ������ ��������� ����������������� ���������, ���� ��������� �������� ��������� ����������� SQL � ��� �����, ��� ���� �� ������� ����������. ��� ������� ���� �������� ORACLE ������������ ���������� ( bind ) ������� ������� ���������� � ��������� ( placeholders ) ���� ���������� �� ������ ����������.

����� �� ����������� SQL ��������� ��� PL/SQL ����, ������� �������� ������� ��������� ������� ����������, �� ����������� ������� (placeholders) � ���� SQL ����������, ������� ����� �������� �� �������� ������. ������ SQL ��������� � ���������:

INSERT INTO wine_list (name, type, year, bin_no) VALUES(:Name, :Type, :Year, :Bin_Number)

���� INSERT �������� 4 ������� �����. ��������� ������ PL/SQL ����� �������� 2 �������:

char plsql_statement[] = � BEGIN\

�� ������ ������������ ������� ��� ����� ������� ���������� � ����� DELETE, INSERT, SELECT, UPDATE ���������� ��� PL/SQL ������, � ����� �������� � SQL �����������, ��� �� ������ ������������ ��������� ��� ����������� ��������.

������ ������ ���������: �� �� ������ ������������ ������� ��� ������ �� ������ ORACLE �������, ���-�� ������� ��� �������.

��� ������� ������� � SQL ��������� ��� PL/SQL �����, ��� ���������� ������� ������� ���������� ������� � �������� ������� ������ ������ ����������, ��� ����� ��������� ��������������� ��������. ��������� ������ ���������� ������������ ������ �� ������ ���������� SQL �����������. ORACLE ��� ����������� ��������������� ��������� � ��������������� ������� ������ � SQL ����������� �� ������ ����������.

������������� ����� �������� ������ �� ������� ���������� �� ������ ����������. ��� ������ ����� �� OCI ������� ���������� (OBNDRV, OBNDRN, OBNDRA, OBINDPS) ���������� ���� ������������� ������ ���������� � ���������������� �������. ��� ���� ORACLE ��������� ��� ������ � ����� ��������������� ����������. ������, ��������� � ���������� �������� ���������� ���������� ��� ���������� SQL ��������� ��� PL/SQL �����.

���������� ����� ����� ����������� �� ��������� ��������� ������� �������� � ������� ���������. ��� ������ ������ ����������, ��� ��� �� ������ ����� INSERT �������� � ������� ����� ������ �������� ������ ������������� ����������� ����� �� ����� �������.

������ ������ ��������� (**): ���� �� ������ �������� �������� ���������� ����������, ��� �� ������, ��� �� ������ ����� ���������� �������� ���������� ��� ������ ���������� SQL ���������. ��� ������������� ���������� ������ � ���� �� SQL ����������� ��� ���� ���� ��� ������� ����������� ������ �����������, ���� ��� ������� ������� � �������� ���������� ����� ������������� ���������� ���������� ���������� � ���������� SQL ����������� �������� ��������� ����������. ��� �����, ��� ��� ��������� ����� ����� ���������� OCI ���������.

������� ���������� �������

���������� ������ �������, ��� ������ ������� �� ������ ������� ������ ���������� � ���������: OBNDRV, OBNDRN, OBNDRA � OBINDPS.

����� �� ����������� OBNDRV, �� ������ ���������� � SQL ��������� ��� �������. � �������, ��������� ����, �������� �:Year� ���� ��� ������� ��� �������� ����.

��� ������� ��� OBNDRA �� ����� ���� ����������������� ������. ��� ������� ��������� SQL ����������� �� �����, ��� ��� ROWID �������� ����������������� ������:

SELECT ename FROM emp WHERE row >

����������������� ORACLE ����� �������� � ������������.

��� ������������� OBNDRN ������ ������ ������ ����� ��� :N, ��� N ����������� ����� �� 1 �� 255. ������:

SELECT ename, sal FROM emp WHERE (job = :1 AND sal > :2)OR(job != :1 AND sal

��������, ����������, ��� � ����������� ������� ������ ���������� ��������, �� ������� ����������� ������ ��� ������. �� ������ �������� ��� ���� OBNDRN ��� ���������� :1 � ���������� :2. OBNDRN ��������� ������������ ��������� ���������� (�������) ��� ������������� ���������� SQL �����������.

������ ������ ���������: �� �� ������ ������������ OBNDRN ��� ���������� ���������� � PL/SQL ������. � ���� ������ �� ������ ������������ OBNDRA ��� OBNDRV.

OBNDRA ������ ��� ���������� ������� ��������� ���������� � �������� � ����� ��������� � �������� � SQL ����������� ��� PL/SQL �����. OBNDRA ����� �� �� ����� ��� OBNDRV, �� � ���������� � �������� OBNDRV ����� �������������� ���������, ������� ���������� ������������ ������ �������, ���������� � ����� ��������� �������.

OBINDPS �������� ���������������� OBNDRA � OBNDRN. � ����� OPCODE �������� �������������, ��� ���������� ����� ����������� �������� INSERT � UPDATE �������������� �� ������ ����������. OBINDPS ����� ���� ������������ ��� �������� INSERT � �������� ��������.

OBINDPS �������������� ������ � ���������� ������ ������ � ��������, ������ ������� � ������ ORACLE 7.3 ��� ����� �������. OBINDPS ������������ �������� ���� piecewise. ��� ������������� ������ ������� ������ OBINDPS ��� ������� ������������ ����� ������ �������. �������������� ������� �������� �������� �� �����, ����� ��� � �������� piecewise.

��� ��������� �������� � ����� ������������ ������ ���� �������, ������� ��������� �������� ��, � ��� �������.

�������� ���������� ������� ��������������� ������

���� ���� SQL ��������� ���� ������, �� � ��������� ������� ��� ���������� �������� ���������� � �������� ��������������� ������. ��� ����������� ��� ������� ��������, ��������� ������ ������� �� �� ������ �� ������ ����������. ��������, � ������������� ����� ���������� SQL ��������� SQL Plus, ����� �������:

SELECT * FROM wine_list;

�� �� ����� ������� ��� ������ ������, ���� ���, ��� ��������� ������� �� ����� ������ � �������������� ������, � ��������� — ������� ������� �������� ������� ��� ������������� wine_list � � ���������� ���� �������.

������, ���� OCI ��������� ����� �������� ��� ����������, ��� �� �������� SQL �����������. �������� ���������� � �������� ����� ��� ������ ������� ODESCR (describe — �������). ODESCR ���������� ������ �������� n-�� �������, ��� n — ������� �������� ������� ODESCR.

�� ������ ������������ ���������� ���������� ��� �����������, ����������� ��� ���������� ������, ���������� �� ���� �������. ��� ��������� ���������� ��� ���� ��������, �������� � �������������� �����, ��� ������� ������������ ����� ODESCR � �����. ���������� ��������� �������� ���������� ����� � �������� 1 � ����������� ��� � �����, ��������� ��������� n-�� �������, ������� ����������� �� ��� ���, ���� �� ����� �������� ���������� �� ������ �varible not in select list� (���������� ��� ��������������� ������) (ORA-01007) � ���� RC ��������� CDA. ��������� �������� ���� �� ����� � ������������� �������������:

cbufl[pos] = sizeof (cbuf[pos]);

if (odescr(&cda, pos, &dbsize[pos], &dbtype[pos],

&cbuf[pos], &cbufl[pos], &dsize[pos],

&prec[pos], &scale[pos], &nullok[pos]))<

if (cda.rc == 1007) break ;

���������: ��� ���������� ���������� OPARSE ����������� � ������ ������� ������ ODESCR.

���������� SQL ���������

���� SQL ����������� ���� DML �������, �� ��� ���������� ��������� ��� �����������. �������� ���������� ����������� �������� �������� ��������� ���������� � SQL � ��������� �����������.

���������� ��� ��������� ������� ��� ���������� SQL �����������. ���� �� ��� — ��� ���������� ���������� ����� ������ ���������� � ���������� �������� OEXEC. ������ ���� — ��� ������������ ������ �� ������� �������� � ��������� ��� �� ���� ��� �������� OEXN. (������� OEXN ����� ����� ������������ ��� ���������� �������� � ��������, ��������� �� ������ ��������, � ���� ������ ����� �� �� �����, ��� ��� ������ ��������.)

������ ������ ���������: ������� ������ ������ ��������� (**)

�������� � ������ ��������� ������� ��������� ������ � ���� ��� ������� �������� ����������, �������� ��� ������� � ��������� INSERT � UPDATE ������������ ������� ������� ������. ��� �������, ��������, ���������� � ������� �������� 10 �������. ��� ������������� ������� OEXEC ��� �������� �������� �� � ����� 10 ���. ��� 10 ��������� � ������� �� ����. � ������ �������, ����� ���� ��� ���������� � ������� ����� ����, ������ ������� OEXN � ������� �� � �������� ���������� �������� 10 � ������ �����, ����������� ��� ���������� � ���� ������. ������������ ������.

����������� ������� ��������������� ������

��� �������� ��� ���������� ���������� ����������, � ������� ����� ����������� ������ ��������������� ������. ��� ���� ����� �� ������ ����� �������������� ��������� ODEFIN ��� ODEFINPS, ������� ��������� ������ �������� ���������� � ��������� ��������������� ������. ���� �� �� ������ ��������� ��������������� ������, � ��������� �� ��� ������ ODESCR, �� ODEFINPS ����� ����� �������� ����� ����� ����������� �������.

���������: �� �� ������ ������������ ODEFINPS � PL/SQL ������. � ���� ������ ���������� ������������ OBNDRA ��� OBNDPS (��� OBNDRV � ������ ������)

�������� ODEFIN ��� ODEFINPS ����� �������� ��� ��������������� ���������� ���������� ��� ������� ��������������� ������. ��� ���� ������ ������������� �������� �������� OPARSE ��� OXEC. �.�. � �������� ���������� �� ������ �������������� �������������� �������� ����������.

ODEFINPS �������� �������������� ���������, ������� ������������ ������� �������� � �������� piecewise. ��� ��������� �������� � ����������� ������ ��� ������� � � ���������� � � ��� �������� ����� ��������.

���������� ����� ������ ��� �������� (Fetch)

����� ���������� ������� �������� ���������� � ��������� ��������������� ������ ��� ���������� ������� ������ �� ����� ������ � ��������� ������. ��� ���� ��� �������� �������:


    • OFETCH — ����������� ��� ���������� ����� ������. �� ���� ��� �������� OFETCH, ���������� ������� OEXEC — ���, ����������, ���������� �������. ��� ���������� ���������� ����� ���������� � ����� �������� OFETCH, ��� �� ����� ����������, � ��������� � ��������� OEXFET ��� OFEN ��� ������� � ������ ��������.
    • OFEN � ������ ��� ���������� ����� ��� ���������� ����� �� ������� � ������ �������� �� ���� �����. �� ������ ������� OEXEC ����� ��� ��� ��������� ������ �� �������.
    • OEXFET — ���� ���������� ������� OEXEC � OFEN/OFETCH � ����� ���������. OEXFET ��������� SQL ��������� � ������������ ��������� ������ �������������� ������� � ��������� ���������� (�������). ����� �����, �� ��������� ���������������� �����, ������� ����� ������������� ������� ������. �� ������ ������������ ���������� ����������� ������� SQL ��������� (OPARSE), ����������� ���������� ������� � �������� ���������� � ����� OEXFET ��� ������������ ���������� � ���������� ������ ������ � ��������, ��� ������ ����������, �������� � ������� �����. ���� �� ���������� ������������ OFEN ��� OEXFET ��� ���������� ���������� �����, �� ������ ���� �������� � ���, ��� ����������� ����� ���� ������, � ���������� ��������� ������� ���������� ��� ������. ��������� ����������, ������������ � �������� ����������� ���� ������ ���� ���������.

����� ��� ��� ���� ��������� �������� ���� ������, �������� ��� �������� ����� ������� �������� OCLOSE. ��� ������ �� ���������� ������ ���� CDA ��������� ������ �� ������������� � ORACLE ��������, � ��� �������, ��������� � ���� �������� �� ������� �������������.

���������: ��� ���������� ������ SQL ����������� ��� ������ ������������� ��������� ������ ������ � ��������� �����. ����� ��������������� ��� ��������. ���, ��� ���� ������� — ��� ����������� ������ ������ �����������.

���������, ��� ������� OOPEN ������ ��������������� ���� OCLOSE. ��� ���� �������� ������� ����� ������� ������, ��������� OCLOSE.

COMMIT ��� ROLLBACK

��������� �� ������� ORACLE ���������� �� ������ ������� OLOGOF, ������� ������������� ������ COMMIT. ������ �� ������ ������� ����� COMMIT, �������� ��������� OCOM. ���� �� ������ �������� ����������, �� ��� ����� ���� ������� OROL.

���������: ��� ���������� ������ ���������� �� �������, ����� ���� ��� ��������, ����� OLOGOF (������ ����, ��������), � ���� ��� ���� �� ����� �� ��� ������ OCOM, ���������� ������������ �������������.

������������ �� �������

��� ������������ �� ������� ����������� ����� OLOGOF. OLOGOF ������ ���� ������� ��� ������ ��������� LDA, ��������� ����� ������� OLOG.

��������� ����� ������� ��������� OCI ����������.

������������ ����� ��������

������������ ������ ������� ��� ������ � ��������� OCI — 32512. ��� ��������� ITERS � NROWS � ������� OEXN, OFEN ��� OEXFET, � ��� �� ������ ��������� ��������� ��������.

�� ����������� ����� ������

�� ��������� ORACLE 7 Server Release 7.2 ���������� ����� ORACLE � OCI ����������� ���� ������ � ����������� ������. Release 7.2 ��� ������� ����� �������� : �� ����������� ( non-blocking ) ����� ������.

���������: ��� ������������� �� ������������ ������ � ORACLE 7 Server Release 7.2, ��� ���������� ������ 7.2 OCI ���������� � ������ 2.2 SQL*N et; ��� ������ � Release 7.3, ��� ����������� ������ 7.2 ��� 7.3 OCI ���������� � 2.3. SQL*Net. Release 7.3 OCI ���������� �� ��������� � Release 7.2 OCI ����������.

�� ����������� ����� ������ ���������� ���������� ������ OCI ���������� ����� ����� ������ OCI ���������. ����� �������, ���� ������ ��������� ���� �������, OCI ���������� ����� ���������� ��� — ���� ������.

��������� �� ����������� ����� ������ ����������� �� ��� �� ������ � ����������� ����� ���������, �� ��������� ��������� ���� ��������� ��������� �� ��������� �� �������. ���������� ��� �������� �������, �������������� �� ����������� ����� ������:


    • ONBTST — ��������� � ����� ������ �������� ���������� � �������� (� ����������� ��� � �� �����������).
    • ONBSET — ���������� �������� OCI ��������� � ���������� ���������� � �� ����������� ������.
    • ONBCLR — ���������� �������� OCI ��������� � ���������� ���������� � ����������� ������.

�� ����� ������ ������� ����� ������ ��� ���������� � �������� � ������� OLOG. �������� mode ����� ��������� �������� OCI_LM_DEF (����� �� ��������� — �����������) � OCI_LM_NBL (�� ����������� �����). �������� ���� �������� ���������� � ������������ ����� ocidfn.h .

������������ ��� ������ � ����������������

��� ������ � Release 7.3 ORACLE Server OCI ���������� ��������� ������������ ������������ OCI � ������������� ����������. OCI ���������, ������� � ���������� Release, ����� ���������������� , �.�. ������������ ����� ������ ��������� ��� ���������� ������������. ��� ���� ������ �������� ����������� ���������� �������� ������� ������ � ����� ����������. �� Release 7.3 OCI ���������� ����� ����������� ������ � ����� ������.

�������� ����� ���������� � ���������� ����������� ������������ ��������� ��� ����������������. ���, ����� ��������������� ������� OCI ��������� ��� ������ �� ���������� � ��������, ����� ��������� ��������, ��� ���� ������ ��������. ����������� ��������� ������� �� ����� ������������.

����� ���, ��� �������� ����� OCI ���������, �� ������ �������� OCI ��������� � ����� �������� ����������� ���� ����������: ������������ ��� �������������. ��� ����������� ��� ������������� OCI ��������� ������� ������� OPINIT, � ������� ���������� ���� ������������ �������� mode. �������� mode ����� ��������� ���� �� ���� ��������, ��������� � ocidfn.h :

OCI_ENV_DEF — ������������ ���������� (�� ���������).

OCI_ENV_TSF — ������������� ����������.

��������������: � ������������� ����������, ���� �� ���� ������ OPINIT(OCI_ENV_TSF), ��������� ���������� OCI �������� �������������.

� ������������� ���������� ��� ����� � �������� �������� ������ ���� ������� — OLOG, OLON � ORLON �� ��������. OLOG — ��� ����� ������� ��� Release 7.3, ������������� ������������ ������ �� ��� ����� � ��������.

�������� ���� PieceWise ��� ���������� INSERT, UPDATE � FETCH

�� ��������� ORACLE 7 Release 7.3 Server OCI ���������� ���� ��������� ������������� ������ ��� �������� INSERT � UPDATE. ��� ��������� � ��������� ��������� ��� ���������� ��� ��������������� ����� ���� LONG ��� LONG RAW, ������ ������� ��� ��������� �� 2 ��.

�� Release 7.3 PieceWise �������� ���� �������� ��� ������������� ������� OFLNG, ������� �� ��� ��� ��������. OFLNG ������ ������� ��� ���������� ���������� �� ������ � ������������� ��������.

� Release 7.3 ���������� �����, ������������������� �������. ����� ������� ������� ����� ���� ������ ��������� ��� ��������� ��� ����� ������ ���������� �������. ���� ����������� ����������� �������������� ������ � ���������� �������3.

�������� PieceWise Fetch ����� ����� �����������. � ������� �� OFLNG ��� ������ �������� ( ������� ���������� �� ����) ��� ����� ��������������.

�������� PieseWise ����� ����� �������. ������ ������������� ����� ������������ � ������ ���������� � ����� ���� ����� ��� ���������� ��������� ������ ����������.

�������� ���� PieceWise ����� �������� ��� PL/SQL ������.

������ ����� ������� ���� ��������� � OCI ��� ��������� �������� ���� PieceWise — OBNDPS, ODEFINPS, OGETPI, OSETPI.

�������� ���� PieceWise ��� ���������� INSERT

  1. ����������� � �������� (OLOG), �������� ������ (OOPEN), �������� ������ SQL ��������� (O PARSE)
  2. ������� ������� � �������� ������ � ����� ��������� (OBINDPS). �� ���� ���� �� ������ ���������� ������������ ����� �������� � �������, ������� ����� �����������, �� �� ����������� ���������� ����� ����� ����� ��� �������� PieceWise.�������� �����, � �������� ����� ����������� ��������, ����� ��������� �������� OGETPI.
  3. ������� ��������� SQL, ������ OEXEC. �� ���� ���� ����� ������ ����� ���������� �� ������ ��� INSERT. OEXEC ���������� � ������� ���������� ORA — 03129 (�the next piece to be inserted is required�-���������� ��������� ����� ������ ��� INSERT�), ���� �� ��� ������ ����� �������� � �������. ��� ����� -���� ������ ���������� �������� OEXEC — ��� ����� �������, ��� ��������� �����- �� ������ ������.
  4. �������� OGETPI ��� ���������� ���������� � ��������� ����� ��� INSERT. ����� �� ���������� ��� ������� �������� �����, � ������� ������������ ��������, ������������ ����� ��������� ����� (OCI_FIRST_PIECE) — ��������� ��� (OCI_NEXT_PIECE) -���������. ��������� �������� ��������� � ocidef.h.
  5. O CI ��������� ������ ��������������� ����� ��� �������� ����� ������ �� ������, � ������� OSETPI. � �������� ��������� ���������� ����� ������, � ������� ������������ ������ ��� INSERT, ��������� �� �����, ���������� ������ ������, � ����� �� ��������� �� �����, �������� �������, ����� ����� ������ ���������� �� ������ (OCI_FIRST_PIECE, OCI_NEXT_PIECE, OCI_LAST_PIECE).
  6. ������� OEXEC �����. ���� ����� ���������� ��������� OCI_LAST_PIECE �� OGETPI � OEXEC ��������� 0, �� INSERT �������� ���������. ���� OEXEC ��������� ORA-03129, �� ������� ��������� �� Step 4. ���� OEXEC ������ ���- ���� ���, �� ��������� ����� -���� ������ ������ � ��������� ���������� ���������.

��� PieceWise Fetch � PieceWise Update ���� ������ ������. ��� ��������� ���������� ��� Update � Fetch ���������� � ������������ ORACLE.

������������� PL/SQL ������ � OCI �����������.

PL/SQL — ���� ����������� ���������� ����� SQL. ���������, ���������� �� PL/SQL, ����� ������ �� ��������� � ���������� SQL ���������. PL/SQL ��������� ���������� SQL ������� � ����� � ��������� ����� ��������. ����� ����, PL/SQL ��������:


    • ���� ��� ��������� SQL ���������
    • ���������� ����������
    • �������� ����������
    • ����������� ����������� ������������ �����.
    • ��������� �������������� ��������.

��������� PL/SQL �����, ���� ���������� �������� ��������� ������������:


    • ����� �������� �� ������� ��������
    • �������������� ����������� ����������� � SQL ����������� ��� ���������� ������ ������
    • ������ � ����������� ������������ PL/SQL �����, ��� ������, �������, �������, �����, ����������� �������������� ��������.

��� ����� ���������� ������������ � PL/SQL ������� ORACLE ������������.

��� ��������� PL/SQL ����� �� ������ ��������� ����, ������� ��� ��� ��������. ��������� ���� � ��������� ����������, ������� ����������� ������, ����� ���� ������ ������, ������� ������� � ����������� ������, ��������� ���� � �.�. ��� � ��������� SQL ������������.

��� ���������� ���������� ������ � ��������� � PL/SQL ����� �� ������ ������������ ������� OBNDRA, OBINDPS ��� OBNDRV. OBNDRN ������������ � PL/SQL ������� ������. ������ PL/SQL ����� � ���������:

SELECT ename,sal,comm INTO :emp_name, :salary, :commission WHERE ename = :emp_number;

�� ������ � ���� ������ ������������ OBNDRV ��� OBINDPS ��� ���������� �������� ���������� � ��������� :EMP_NAME, :SALARY � :COMMISSION � ������� ���������� ��� ������� :EMP_NUMBER.

���������: �� �� ������ ������������ ODEFIN ��� ODEFINPS ��� ����������� �������� ���������� ��� ������������� � PL/SQL ������. ������ ����� ������ ����� ������� ��������� OBNDRV ��� OBINDPS.

���� � PL/SQL ����� �������� ���������������� �������������� ��������, �������� � �������� ���������� �� ����� ����������.

����� �� ��������� ��� ���������� ������ � ORACLE �������, � �����, ����� �� ��������� ��������� ������ � ������� ��� ���������� �������� ��� ������ � ���������� ����������. ORACLE ������������ ��� ������ � �������, � ������� ��� �������� �� �������. �� ����� ����� ��������������� ��� ������. ����� ����� ������, �������� �� �������, ������������ ����� ���� ��� NUMBER, CHAR, DATE, � RAW.

���� OCI ���������� ��������� ��� ������ �� ���������� ����������, ���� ���������� ������� �� ����� ���������� OCI ����������. ��� ���������� ������ �� ������� � ���� ���������� ��� ���������� ������ ������� ���� ����������. ��� �������, ��������, �� ��������� ��������� ��������� ������:

SELECT sal FROM emp WHERE empno = :employee_number

��� ���������� �������� �������� ������� SAL � ���� ���������� ������, �� ������ �������� ��� ���������� � � ���� ��������� ������� ������������� ������������ �����.

� ������ ������ ORACLE ������� ���������� �������, ��� ������ ��� ������� � ���������� OCI ���������� ������ ���� ���������� � ���������� ������ ��� ������� ������� ������� ORACLE, ��� ������� ��� ������ ���� ������ ��������, ��������, VARCHAR2 (��� = 1) ��� CHAR (��� = 96) � ��������� FTYPE ������ ODEFIN. ��� ���� ��� ���������� � ����� OCI ��������� ���������� ���������� ��� ������ �������� � ����� ���� ������ ������� ������� ODEFIN � �������� ��������� BUF.

�� ������ ������, ����� �� �������� �������� SAL � ���� ��������� ����� (floating-point), ������� ����������� ������� ��� ������ ��� FLOAT (��� = 4). ��� ����� ���������� ���������� ����������, ������� ����������� ��� �������� ����� �������, � �������� ����� ���� ���������� � ORACLE, ������ ������� ODEFIN � ���������� BUF, ����������� �� ��� ����������.

ORACLE ��������� ������� ������ ��������� �� ���, �.�. ������ ������ � ��� ����, � ������� �� ��� �� ���� ���������, ���� ����� �������������� ������ ��������. �� ������ �������������� �������� � ��� �����������. �� �� ������� ��������� ���������� ������ DATE �� ������� ������ NUMBER — ��� ��������. �� ������ ������ ������ OCI ���������� ���������� ������ � ��� �������, � ������� ��� �������� �� �������, � ���� ������ �������� ��������������� �������������� �� ���������. � �������� ������� ������� ����� � ���� ������ ������������ ������ DATE (��� = 12), ������� ����� ������� ��� �� � ����� ����� ����������������, ������� ������������ ����� ����� ������ ������������ � ��������������. Server ��������� ���� ������ � ��� ����, � ������� �� �������� � ������ OCI ����������.

��� �������� ��� ������ ������ �� ������ ������������ ���������� ������� ��� ������ ��� �������� ���������� � ����������� �������� ���������� �����, ��� OBNDRA ��� ODEFIN. �� ������ �������� ORACLE Server ��� ������� ��� �������� ����������, �� ������� ��� � �����.

���������� ���� ������

����, �� ��������, ��� ORACLE ������ ������ � ����� ���������� �������������. ������ ��� ������ ����� ���� ���������� ����� � ���������� �������������, ������� ��������� � ����� ocidfn.h. ��� ����, ����� ������ ��� ������, ������� ���������� ������, �� ������ ������� ������� ODESR, ������� ���������� ���������� ����� ����������� ���� ������ ��� ��������� �������. ��� ������ ����� ��� ��������, ��� ��� OCI ��������� ������ ������, ��� �������������� ���������� ������ ������������� � ������, ���������� ����� OCI �����������.

��������� ������� ��������� ��� ���������� ���� ������ � �� ���������� ����:

���������� ��� ������

����������� ����� ������ ����� ���������� � ������� ���������.

��������� �������������� ����� ������������ � �������:

���������� ����

������� ����

varchar2

number

rowid

long raw

mlslabel

1 varchar2

2 number

3 integer

4 float

5 string

6 varnum

7 decimal

8 long

9 varchar

11 rowid

12 date

15 varraw

23 raw

24 long raw

68 unsigned

94 long varchar

95 long varraw

96 char

97 charz

105 mlslabel

I/O

  1. ��� ������� ���������� ������ ������ ���� � ������� ORACLE �BBBBBBBB.RRRR.FFFF�. ��� ��������- �������� ������� ������������ � ��� �� �������
  2. ��� ������� ���������� ������ ������ ���� � ����������� ORACLE ������� �������� ���. ��� ��������, �������� ������� ������������ � ��� �� �������
  3. ��� ������� ���������� ������ ������ ���� � 16 �������. ��� ��������, �������� ������� ������������ � ��� �� �������
  4. ��� �������� ���������� ������� ������ ��������� ���������� �����
  5. ����� �� ������ ��������� 2000
  6. ��� ������� ���������� �������� ����������� � 16 �������. ��� �������� �������� ������� ������ ���� � 16 �������
  7. ��� ������� ���������� ������ ������ ���� ���������� ����� ������������ ������� � ��������� �������. ��� �������� ���������� �������� ������� ������������ � ��� �� �������
  8. ��� ������� ���������� ������ ������ ���� ���������� ����� ������������ ������� � ������� ������������� �������. ��� �������� ���������� �������� ������� ������������ � ��� �� �������

I/O — ������� � ��������

�������� ��������� ������� OCI � �������� ����� �

����� ��������� OCI ���������� � ������������ ��������� � �� ��������.

��� ����� ���� ������������� ����, � ��� �������������� � ���������� ��������. � �� ������ ��� ����, ����� ���� �������� ����� �������������� ��� �������, ������� � ���� ��������� ��������, � ��� �������, � ������� ��� ����������� � �����.

������� OLOG ������������� ���������� ����� OCI ����������� � ORACLE ��������

olog(Lds_Def * lda, ub1 * hda, text * uid, sword uid1, text * pswd, sword pswd1, text * conn, sword conn1, ub4 mode);


    • lda — ��������� �� LDA ���������.
    • hda — ��������� �� HDA ���������
    • uid — ������, ���������� ��� ������������
    • uid1 � ����� ������, ���������� ��� ������������
    • pswd — ������, ���������� ������.
    • pswd1 — ����� ������, ���������� ������.
    • conn — ������, ���������� ���������� ��� SQL*Net � ����� �������� ���������� ���������� ����� (��� �������).
    • conn1 — ����� ����� �������.
    • mode ��������, ����������� ��� ������� ������ ������ OCI ������� — � ������ ���������� (OCI_LM_DEF) ��� � �� ����������� ������ (OCI_LM_NBL).

������� OOPEN ��������� ������ � ��������� ���������� � ��������.

Oopen(Cda_Def * cursor, Lda_Def * lda,


    • cursor ��������� �� ��������� CDA.
    • lda — ��������� �� ��������� LDA, ������� ��� �������� � ������ OLOG. ����� �������, ���������� — � ����� ������� ��������� ������.
    • dbn — �������� �������� ��� ������������� � ������� ORACLE 2, � ����� ������� ������� ������ ���� 0.
    • dbn1 — �������� �������� ��� ������������� � ������� ORACLE 2, � ����� ������� ������� ������ ���� 1.
    • arsize — ORACLE 7 �� ���������� �������� arsize. ������� ������ ��� ������� ������������� ������������������ ��� �������������.
    • uid ��������� �� ������, ���������� ��� ������������ � ������. ����������� ����� ���� �/�.
    • uid1 � ����� ���������� ������.

������� OPARSE ������ ����������� ������ SQL ��������� ��� PL/SQL ����� � ����������� �� � �������� ��������.

oparse(Cda_Def *cursor, text *sqlstm,[sb4 sqll], sword defflg,ub4 lngflg);


    • cursor — ��������� �� ��������� CDA ��������� �������.
    • sqlstm — ��������� �� ������, ���������� SQL ����������� ��� PL/SQL ����.
    • sql1 � ����� ���������� ������.
    • defflg � ���� �������� �� 0, �� ������ SQL ����������� ������������� �� ���������� ������� ODESCR(), OEXEC(), OEXN() ��� OEXFET(). ���������� ���������� � ����������� ������� ��������������� ������ ��� �� ����������� � ���������� ��������, ���� �� ����� ������� ��������� ���������� SQL ��� �������� �������� �������. ORACLE ����������� ��������� ���������� ����� �� ���� �������, ��� ��� ��������.
    • lngflg — ����, ������������, ��� ����� ������ ������� ���� ������������ SQL ���������. SQL �� ��������� ��������� ������ ����. ��������� ��������:
      • 0 — ���������� SQL ��� ������ 6 �������.
      • 1 — ���������� ���������� ��������� ��� ���� ������ ������� ������ (��� ������� � ������ ������ ���������� ������)
      • 2 — ���������� SQL ��� ������ 7 �������. ���� �� ����������� ��� ��������, �� �������������� � ���� ������ 6, �� ���������� ������: ORA-01011: Cannot use this language type when toking to v6 database — �� ���� ������������ ���� ��� ����� ��� ������� � 6-�� ������� �������.

������� ODESCR ��������� ������� ��� SQL ��������. ������� ���������� ���������� ��� ������ ORACLE ��� ��������� �������, ������ ������, �������� � �.�., � �.�.

odescr(Cda_Def *cursor, sword pos, sb4 *dbsize, [sb2 *dbtype], [sb1 *cbuf], [sb4 *cbufl], [sb4 *dsize], [sb2 *prec], [sb2*scale], [sb2 *nullok]);


    • cursor — ��������� �� ��������� CDA ��������� �������.
    • pos — ������� �������, �������� ������� ���������. ���� �� ������� ����� �������������� �������, �� � RC ���� ��������� CDA ����� ���������� ��� ������ �Variable not in select-list�.
    • dbsize ��������� �� signed long ����������, � ������� ����� ��������� ������������ ������ �������, ������������ � ORACLE ������� ������ ��� ���� ������� ����� ��������� �������.
    • dbtype — ��������� �� signed shortint ����������, � ������� ������� �������� ��� ����������� ���� ������ ��� ����������� �������.
    • cbuf — ��������� �� �����, � ������� ORACLE �������� ��� ����������� �������. ������ ��� ����� ������ ��������������� OCI ���������.
    • cbuf1 — ��������� �� signed char ����������, � ������� �� ������ ODESCR() ������ ���������� ����� ������������������ ������ cbuf , � ����� ������ ORACLE �������� � ��� ���������� �������� ����� ����� ����������� �������. ���� ��������������� ������ ������, ��� ����� ����� �������, �� ���������� � ������ ��������� �� ������� ������.
    • dsize — ��������� �� signed long ����������, � ������� ����� ��������� ������������ ������� ������ �������. ���� �������� ����� ������� � ������ ����������� ������� ��� ������� SUBSTR, TO_CHAR � �.�., �.�. ���� ��� ����������� �������.
    • prec — ��������� �� signed shortint ����������, � ������� ������� �������� �������� ��� ������� ���� NUMBER — ��� ����� ���������� ���������� ����� � �����.
    • scale — ��������� �� signed shortint ����������, � ������� ������� �������� ���������� ���������� ������ ��� ������� ���� NUMBER.
    • nullok — ��������� �� signed shortint ����������, � ������� ������� �������� 0, ���� ������� not-null , � ��������� ������ ������� ����� ��������� null ��������.

������� OBINDPS ����������� ������ ���������� ����� OCI ��������� � ��������� � SQL ����������� ��� PL/SQL �����. � ������� �� ����� ������ ������� ���������� ���������� OBINDPS ��������� ������ �������� ���� PieceWise � ����� ��������� ������� ��������.

obindps(Cda_Def *cursor, ub1 opcode, text *sqlsvar, [sb4 sqlvl], ub1 *pvctx, sb4 progvl, sword ftype, , [sb2 *indp], [ub2 *alenp], [ub2 *rcodep], sb4 pv_skip,sb4 ind_skip, sb4 alen_skip, sb4 rc_skip, [ub4 maxsiz], [ub4 *cursiz],


    • cursor — ��������� �� CDA ��������� ��������� ������� � ��������������������� � ��� (OPARSE) SQL ������������ ��� PL/SQL ������.
    • opcode — ��� �������� PieceWise ������ ���� 0, � ��������� ������� -1.
    • sqlsvar — ���������� ����� ������, ���������� ������ ��� ���������� ���������� (������� �������������� ���������, ��������: �:varname�) � SQL �����������.
    • sqlvl — ����� ������ ������� � ���������� ���������.
    • pvctx — ��� �������� ���� PieceWise ��������� �� ���� ������, ������� ������� ����������� ����������, � ����� ���� ����������� �� ��� ����� �����. � ��������� �� ��� ������ ������� ���������� � �����, � ������� ����� ����������� ������� ���������� � �������. ���������� �� ����� ��������� ������������� � ����������� �������� OGETPI(). ��� �������� �������� � ������������ ���������� ���������� ���� �������� ������ ��������� ��������� �� ����������, ���� ��������� �� ������ ������� ������� ��������.
    • progvl — ��� �������� ���� PieceWise ���� ������� �������� ������� ���������� ��� ����������� ��������� ������ �������� ������ ����, ���������� � ��������� ftype . ��� ������� �������� ��� ������������ ���������� ���������� �������� ��������������� ��� ����� ���������� ���������� ��� ����� ���� � ���������.
    • ftype — ��� �������� ���� ������. ORACLE ����������� ���� ������ ����������� ���������� �� �������� ���� �� ���������� ��� ���������� SQL �����������. ��� �������� ���� PieceWise ����� �������������� ������ ���� ������ 1 (VARCHAR2), 5 (STRING), 8 (LONG) � 24 (LONG RAW).
    • scale — �� ������������.
    • indp — ��������� �� ���������� ��������� ��� ������ ���������� ����������� ��� ���������� �������� �������� � �������� ���������� ����������.
    • alenp — ��� �������� ���� PieceWise ������ ���� 0. ��� �������� �������� ��� ������������ ���������� ��������� �� ���������� ��� ������. ���������� ��� ������ �������� ����� ���������.
    • rcodep — ��������� �� ���������� ��� ������, ������� ����� ��������� ���� �������� ��� ������� ���������� ��������.
    • pv_skip — ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ������������ ���������� ��������� ����� ����������� �� ������� ��������. ������ ������ ���� ����� ������� ���������.
    • ind_skip — ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ������������ ���������� ��������� ����� ����������� �� ������� ���������� �����������.
    • alen_skip � ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ������������ ���������� ��������� ����� ����������� �� ������� ����.
    • rc_skip — ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ������������ ���������� ��������� ����� ����������� �� ������� ����� ��������.
    • maxsiz — ������������ ������ ������� �������� ��� ����������. �������� ������ ���� � �������� �� 1 �� 32512.
    • cursiz — ������� ���������� ��������� � ������� ��������.
    • fmt — �� ������������.
    • fmtl — �� ������������.
    • fmtt — �� ������������.

������� ODEFINPS ���������� �������� ���������� ��� ������������ �������, �������������� ������� � SQL ��������. ������� ����� ���� ������������ ��� ��������� ���� PieceWise � ��� ��������� � ������� ��������.

odefinps(Cda_Def *cursor, ub1 opcode, sword pos, ub1 *bufctx, sb4 bufl, sword ftype, , [sb2 *indp],

, , , [ub2 *rlenp], [ub2 *rcodep], sb4 buf_skip, sb4 ind_skip, sb4 len_skip, sb4 rc_skip);


    • cursor — ��������� �� CDA ��������� ��������� ������� � ��������������������� � ��� (OPARSE) SQL ������������ ��� PL/SQL ������.
    • opcode — ��� �������� PieceWise ������ ���� 0, � ��������� ������� -1.
    • pos — ������ � ������ ������� ��������������� ������. ���������� � 1 ��������� �������� ������ ������� �������. ��� �������� �� ������������� ������� � ������� �������� ����� �� ����������.
    • bufctx — ��� �������� ���� PieceWise ��������� �� ����� ������, ������������ ������������� OCI ����������� ��� ����� �����. � ��������� ��� ����� ����������� ������ �� ����, � ������� ����� ����������� ������� �� ������ �������. ��� �������� �������� � ���������� ������ ��� ��������� �� ���� ������ ���� �� ���������� ������.
    • bufl — ��� �������� PieceWise ������������ ������ ��� ������ � �������. ��� ���������� ������ ��� �������� �������� ����� ���������� ���� ����� ���� � ���������, ���� ������ ����� ���������� ��������.
    • ftype — ��� �������� ���� ������ ��� �������. ORACLE ������������ � ���� ��� ���������� ��� ������ ��� ��������� �������� � ���������� ���� ���� ��������� � �������.
    • scale — �� ������������.
    • indp — ��������� �� ���������� ��������� ���� ������ ���������� �����������.
    • fmt — �� ������������.
    • fmtl — �� ������������.
    • fmtt — �� ������������.
    • rlenp — ��������� �� ������� ��� ������ ���������, ������� �������� ����� ������ � �������, ����� ����, ��� ���������� ������� (FETCH).
    • rcodep — ��������� �� ������� ��� ������ ���������, ������� �������� ���� �������� ��� �������� ������ �� �������, ����� ����, ��� ���������� ������� (FETCH).
    • buf_skip — ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ���������� ��������� ����� ����������� �� ������� ��������. ������ ������ ���� ����� ������� ���������.
    • ind_skip — ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ���������� ��������� ����� ����������� �� ������� ���������� �����������.
    • len_skip — ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ���������� ��������� ����� ����������� �� ������� ����.
    • rc_skip — ��� �������� ���� PieceWise ������ ���� 0 ��� NULL. ��� �������� �������� ��� ���������� ��������� ����� ����������� �� ������� ����� ��������.

������� OEXEC ��������� SQL ���������, ��������������� � ��������.


    • cursor — ��������� �� ��������� CDA � �������� �������� � SQL ����������, ��������� ����������� ������ (OPARSE())

������� OEXN ��������� SQL ���������. ���� � �������� ������� ���������� ��� ��������� ������ ��������, �� ��������� ���������� ���������, ��������� � �������� ��������� �������, ����� ������������ ����������� � ��������.

oexn(Cda_Def *cursor, sword iters, sword rowoff);


    • cursor — ��������� �� ��������� CDA � �������� �������� � SQL ����������, ��������� ����������� ������ (OPARSE()).
    • iters — ����� ���������� ��������� � ������� ��������.
    • rowoff — �������� � ������� �������� (������������ � 0). ���������� ��������� �������, ����������� � �������� iters-rewoff.

������� OEXFET ��������� SQL ���������. ���� � �������� �������� ���������� ��� ��������� ������ ��������, �� ��������� ���������� ���������, ��������� � �������� ��������� �������, ����� ������������ ����������� � ��������. ���������� ����� ������� (FETCH) ���������� ����� �� ��������������� ��������� � ������ ��������.

oexfet(Cda_Def *cursor, ub4 nrows, sword cancel, sword exact);


    • cursor — ��������� �� ��������� CDA � �������� �������� � SQL ����������, ��������� ����������� ������ (OPARSE())
    • nrows — ���������� �����, ����������� � ��������. ������� ��������������� ���������� ������������� � ��������� CDA � ���� raws procecced count (rpc) ��� ����� ��������. ���� ��� ������ � ������� ��� �������, ���������� ������ ORA-01403 no data found (������ �� �������).
    • cancel � ���� ���� �������� �� 0, �� ���������� �������������� �������� ������� ����� ��������.
    • exact � ���� ���� �������� �� 0, �� ���������� ������ ��� �� ������������ nrows c ����� rpc ��������� CDA.

������� OFETCH ��������� ������ ��� ����� ������ ��������������� ������.


    • ��������� �� ��������� CDA � �������� �������� � SQL ����������, ��������� ����������� ������ (OPARSE())

������� OFEN ������ �� OFETCH, ������, ��������� �� ��������������� ������ �� ���� ������, � ����� ��������� � ������ ��������

ofen(Cda_Def *cursor, sword nrows);


    • cursor — ��������� �� ��������� CDA � �������� �������� � SQL ����������, ��������� ����������� ������ (OPARSE())
    • nrows — ���������� ����� ��� ��������.

������� OCLOSE ��������� ������, ����������� ������� �� ������� � ������� ��������� ����� ����������� LDA � CDA.


    • cursor — ��������� �� ��������� CDA � �������� ��������.

������� OLOGOF ������� ��������� ����� ���������� LDA ����������, ����������� �� ������� ���������� � ����������� ��� ������� �� �������, ��������� � ���� �����������.


    • lda — ��������� LDA � ������� �����������.

���������� OCI ��� ORACLE 7 � ��������� �������� ����������������.

����� � ORACLE 7 �������� ����� OCI � Borland C++ 5.01

��� ������ ��� ����������� ��������� �����: OCIAPR.H, ORATYPES.H, OCIDFN.H, OCIW32.DLL � ���������� ������� ��� OCIW32.DLL, �������������� OCIW32.LIB. �������� �������� �� ��, ��� ��� ����������� � ��������� INCLUDE ��������� ������ ���� ������������ ���� OCIAPR.H, ��������� ���������� �� ����. ���� ���� �������� ��� ������ ������ � C++. ������������ ���� OCIAPR.H — ��� ���� � ��������� ������� OCI ��� ����������� ANSI C, ������ �, � �� �++, ������� ��� ���������� ���������� ��� ������ � C++. ��������� ����������� � ���������� �����, ����������� �����������, ��� ��������� �������, ������������� � �����, ���� �������������� �� ����� �. �������� ��� �����������:

���������� ����� OCIAPR.H

��� ������������� ���� ����� �������� ����������� ������������� ORACLE.

������ �� ����� ����� ������ OCI ����������, ����� ���������� ������� ����� ���������, ��� �� ����� ���� �� ����� � ������������ ��������� �����, ������� ��������� �� ������������� ������ � �������� � ������ �� ���, �.�. �����, ���������� ��������� LDA � HDA, ������ ����������� ���� �������� (������� � �������) � �������������� (����������). ��� ����� ������ � ��� ORA_Connect.

����� ����� � �������� ORA_Connect

������ �������� ������ �������� � �������� ������� ora_connect.h � ora_connect.cpp � ������� � ������ ��� Borland �++. ��� ������ ��������� ������ �������� ������:

ORA_Connect(text * sUser, text * sPass, text * sServ);

char ORAconnect( void );

void ORAdisconnect( void );

��� �� ������ ������, ��� ���������� � ������ — ��� ��������� LDA � HDA, ����� ���� ������, ����������� ������������, ������ � ������ — ��� ��� ���������� ����� ������, ������� ���������������� ��� ������ ������������. � �������� �������� ���������� ��������� ��������� ����������, ������������ ����� � ���������� ����������, � ��� �� �����������, ���������� � ������ ������������� � ������������ �� �������.

� ����� ora_connect.cpp ��������� ����������� ������� ��� ������ ORA_Connect. ����������� ����������� ������ ��� �������� LDA � HDA, � ��� �� ��� ������ ����������. ����� ������, ��� ��� ����, � ������� ��������������� �����:

this ->LDA = (Lda_Def *)calloc(1, sizeof (Lda_Def));

this ->HDA = (unsigned char *)calloc(1, HOSTDATAAREA);


memset( this ->HDA, 0, HOSTDATAAREA);

��� ������, ����� ����������� ��������� HDA ���������� ��������� 0 �� ����������. ����� ORAconnect �������� �� ����� � ��������:

char ORA_Connect::ORAconnect( void )<

if ( this ->Ret == NOTCONNECTED )<

opinit(OCI_EV_TSF); //Define Thread-safe envaronment

this ->Ret = olog( this ->LDA,

strlen( this ->sInUser),

strlen( this ->sInPass),

strlen( this ->sInServ), OCI_LM_DEF); //Bloking mode

if ( this ->Ret != 0 )<

this ->Active = false ;

this ->RetCode = this ->LDA->rc;

if ( this ->RetCode == 0 ) this ->Active = true ;

����������� ��������� � ������ �������� OCI ������ — OPINIT, ������� ��������� OCI ����������, � ������ ������, � ����� ���������� ������-����������, � OLOG, ������� � ������������� ����� � ��������. ��� ����� ���������� ��������� LDA, HDA, ���������� � ������������ � ����� ���������� OCI �������� ��� ������� ����������. � ���������� ������� ����� ����� ���������� � ����������� ��������� ��������. ����� ���� ��� � �� ����� ������, �� � ����, ������������, ����� ������ �� ����� ��������. �������� �������� �� ��, ��� ������� OLOG ��������� �� ������ ���������� ������, �����������, ��������, ������������, �� � �� �����. ����� ���� ������ ���������� ��� ������������� ���������� ����� � OCI �������. � ������������ ����������������, ��� ������ ���� ����� ����� ������ -1, ��� ���� ��� �����, ��������������� �� 0, ������ ����� ��������� �������������. ��� �� ������ ��������. ����� ���������� ����� ������ �������������. � �������, ��������������� ������ �� �������, ���� � ���������� ������, ������������ ������ � ������������, �� ������� ������� ���������� (���������� ������ ������), �� ��������� ������ exception �� LOGON. ��� ��� ��� ���������������� ������, � �� ���� ������ ����������� ��������, ���, �����������, ������ �������������� ��� ���������� ��������� ���������� ��� ������������.

������ ������ ORAdisconnect �������� �� OCI ������� OLOGOF:

void ORA_Connect::ORAdisconnect( void )<

this ->RetCode = ologof( this ->LDA);

this ->Ret = NOTCONNECTED;

this ->Active = false;

������������ �������� — ��� ��������� LDA — ���������� ���������� ����� �� ������. ������������ �� ������� ���������� ������ ����� ��������, � ���� �� ��� ����� ���� �����������.

������ ����� �������� ������ �� ������������� ������ ORA_Connect . ��� ������� �������� �� ������� WM_COMMAND �������� ���� ���������� ��� ������ ������ ���� CM_CONNECT (�������� ��� mainwindow.cpp, ��������� MainWindow::Dispatch):

Connect_Dlg oDlgC( this , IDD_DIALOG_OLOG);

ORA_Connect oConn( (text*)oDlgC.GetUser(),

if ( oConn.Ret == 0 )<

if ( oConn.RetCode == 0 )<

MessageBox( this ->Handle,

MessageBox( this ->Handle,

«DisConnect is failed!»,

MessageBox( this ->Handle, «Connect is failed!», «-!-«, MB_OK);

Connect_Dlg — ��� ����� ���������� ����������� ����, � ������� �������� ������������, ������ � ��� ������� ��� SQL*Net. (� ������ ������� ��� ��� ���� ������ ���� ���-�� ���������, ���� �� �� ������ Exception.) ���� �� ��������� ����� ���� ������ ������ OK ( if ( oDlgC.Show() ) ), �� ���������� ������� � ��������� ������� ����� ����������� ���������� oConn ������ ORA_Connect. � �������� ���������� ��� ������������ ���������� ���������� � ������������ � ������� �� ����������� ������:

ORA_Connect oConn( (text*)oDlgC.GetUser(),

��� �������� ���������� ������������� �������������� ������ � ���������� ����� ��� ���������� ����� ���� �������� �������������� ������������ �� �������:

�������� �������� �� ��, ��� ������������� ������������� ������ ������������, ��� ���������� ������������� ��� ������ ����������� ������ ORA_Connect:

free( this ->sInUser);

free( this ->sInPass);

free( this ->sInServ);

�� ����������, ���� �� �� �������� �������� ���� ����������������.

��� ��, ��������, ��������� ORA_Connect ����� ������� �����. ������ �� ������ ����� ��� ���������� ������ � ��������. ���������� ����� �����, ������� ��, ��������, ������� ��������������, ����� ��������� � ���������� � ����������, ������ ������� ��� � ����� �����������. ���������� ���� ���������� � ���� ����� ORA_Connect.

������ ��������� � �������� ������� ��������� SQL �����������. ��� ����� ������� ����� ORA_Statement.

����� ���������� SQL ����������� ORA_Statement.

�������� �������������� ������� ������ — �������� �������, ����������� ������ SQL �����������, ���������� ������� ����������, ����������� ���������� �������������� �������, ���������� SQL �����������, ���������� ������, ��������������� �������. ��� �������� ������ �� ������� � �������� ������� ORA_Stateme n t.h � ORA_Statement.cpp � ������� � ������. ��������� ���������� ������ �������� ����������, ���������� ������ �������� ����������, SQL ���������, ��������� CDA ��� �������:

unsigned char * SQLtext;

unsigned long ColumnCount;

unsigned char * OutputBuffer;

unsigned char * InputBuffer;

unsigned long ParamNumber;

unsigned long RecordSize;

unsigned long RecordParamSize;

unsigned long Granulation;

unsigned long CurrGranule;

unsigned long LastGranule;

unsigned long RowsDone;

unsigned long ParamCount;

unsigned char ErrMes[ 512 ];

unsigned char * GetSQLText( void );

void SetSQLText( unsigned char * SQLstmt);

unsigned long GetSQLColumnCount( void );

char SQLExec( void );

void SQLFetch( void );

char SQLeof( void );

short SQLCommit( void );

short SQLRolBack( void );

unsigned char * SQLGetColumnName(DWORD pos);

unsigned long GetGranulation( void );

void SetGranulation( unsigned long x);

SelectListItem * FieldGet(DWORD pos);

unsigned char * SQLDescribeError( void );

unsigned short SQLGetLastError( void );

����������� ORA_Statement(ORA_Connect * oConn) �������������� ����������, ����������� ������ � ��������� ������ � ����������, ��������� � �������� ��������� :

this ->Cursor = (Cda_Def *)calloc(1, sizeof (Cda_Def));

this ->connect = oConn;

this ->OpenCursor = oopen( this ->Cursor,

strlen( this ->connect->GetUser()));

���������� ��������� ������:

if ( ! this ->OpenCursor ) if ( oclose( this ->Cursor) == 0 ) this ->OpenCursor = -1;

� ����������� ����� ����������������� ������.

��� ������� SQL �����������, ���������� ���������� � ����������� ���������� ��������������� ������ ������ ����� SetSQLText.

� ������ �� ������ ������������ SQL ���������, ���������� � �������� ���������, �� ���������� ���������� ������. ��� ���� ���������� ������ ���� ����������� �������� (� ��� ����� � ���� ������� ������ — ������� ������� ) �� �������. ��� ���������� ��� ����, ���, OCI ��������� �� �������� ����������� �������� � SQL ����������� (��� PL/SQL �����). ����� ����� SQL ��������� ������������ ������������ �������:

oparse( this ->Cursor, this ->SQLtext, strlen( this ->SQLtext), 1 , 2 );

���������� �������� ������� ��������������� ������:

if ( odescr( his ->Cursor,

lL = LengthFromORATypes(InernalDatType, dbSize, DisplaySize, ScalOfNum);

ColumnName[LengthOfColumnName+ 1 ] = 0;

RS_S.S_EXTERNALTYPE = ExternalTypes(InernalDatType, ScalOfNum);

this ->RawStructure[pos- 1 ] = RS_S;

AccauntBytes = AccauntBytes + l L;

��������� �������� ���������� �� ���������� ������ this ->RawStructure, ������� ���� ������ ��������� �������� ��� ��������� Rstruct . ���� ��������� Rstruct ��������� ��������� ���� ������� �������������� �������. ��������, ����������, �������� �� ������� ExternalTypes � LengthFromORATypes . ������� ExternalTypes ������ ������������ ����� ���������� ����� ������ � ������� ����� ������ ��� OCI ���������. ���� �� ���������� �� ���� ���� �������, �� �������, ��� �� ��� ���� ������ �������������� �������������� �������. ��� �������, �� — ������, �� ����������� �������� ����� �������, � ��- ������, ��� ���������� ����� ����������� �������� �� ������ ����. � ��������� �� �������������� ���� ���� LONG � LONG ROW. � ���������� �� ���� ������ ���������� �������� ���� PieceWise, ��������� ������ �� ������� ������ �� ���� �����, ������� ���, ������� ������� ������������.

�� ����������� ������ ���������, �������� ������� ��������������� ������, ������������ ������� ������ ��� ������� �������� ����� ������ � OCI ����������. �������� ��� �������� odefinps . �������� ����� ��� ��������������� ������ ����������� ���, ��� ����� ������� ����� ��������� ����� �������. ���������� ����� ������������ ���������� Granulation, �� ��������� ��� ������������� 20 �����, �� ��� ���� ����� �������� ������� void SetGranulation( unsigned long x) . ��� ������ ������ odefinps :

if ( odefinps( this ->Cursor,

sizeof ( short )* this ->ColumnCount,

���������� ����� ���������� ���� ���������� (ub1 *)sP, ������� ���������������� ����� ���� ��������� ���������� ������ — ���������� �� �����, ���� �������� ��� ������� ��� ������� pos :

dwW = this ->RawStructure[pos- 1 ].S_OFFSET;

sP = this ->OutputBuffer+dwW;

��� ��� ����������� ����� ���������� SQL ����������� — char ORA_Statement::SQLExec( void ) , ����� ������� ����� ��������������� ������ — void ORA_Statement::SQLFetch( void � ����� ������� ������� �������� ����� — SelectListItem * ORA_Statement::FieldGet(DWORD pos) . ����� SQLExec( void ) ������ ������������ �������� �� ��� ������������ ��������� � � ����������� �� ����� ��������� ���� �� OCI �������� oexfet, oexec ��� oexn. ��� ���� �������������� �������� Grannulation — ������� ������ �������. ���� �������, ��� ������������ (� ������ ��������� — ��� �����������) ��������� Grannulation �� �������� �� ������ ���������� �������. �.�. �� (�����������) ������ ������� SQLExec , ����� SQLFetch , ��� ��� �������, �� ����� ������, ���� ������ ��� ��������������.

��� ������ ������ SQLFetch( void ) �������� � �������������� (��� ��������� ���������� ������ Grannulation ) ������ ofen ��� ���������� ������ ������ ���������� �� �������������� �������.

����� ��� �������� �������� �����, ������� ����������� �������� ����� ��� ������� ������ �� ������� ���� �����: FieldGet(DWORD pos) . �� ��������, ��, � �������� �����, ������ ������ ������ �� �����, �� ����� ������������ ��� ������ ������� odefinps � ������ ����������� SQL ����������� SetSQLText :

this ->sliR.uValue = ( void *)( this ->OutputBuffer+dwW);

��� dwW ������������ � ������ ������ ���� � ������� ������ � ������ Granulation.

����� ����������� ���� ��������� ������� ����� ����� ������ OCI ���������� ����� ��������� ��������� �������:

ORA_Connect oConn((text*) �USER� , (text*) �PASSWORD� , (text*) �SERVER� );

if ( oConn.Ret == 0 )<

oStmt.SetSQLText( �ANY SQL STATEMENT� );

if ( oStmt.GetSQLColumnCount() > 0 )<

MessageBox( this ->Handle, oStmt.SQLDescribeError(), «-!-» , MB_OK);

MessageBox( this ->Handle, «Connect is failed!» , «-!-» , MB_OK);

��� � ����������� �� ��� ������ � ���� ��������, ������� �� ������� � �������� ������� mainwindow.cpp — void MainWindow::STMT_Test1( void ) � void MainWindow::STMT_Test2( void ). ������ ������ ������ ��� ���������� ������ ����:

����� ������� �� OK ���������� ���������� SQL ����������� ��� PL/SQL �����, ������� �� ����� � MultyLine Edit ��� ��������� SQL Statement.

������ ������ ��������� ������� � ��� �����, ��� �� ��������� ��� �������� ���������� ������ SQL ����������� � ��� ������, ���� ��� ������. ����� ����� ������������ ������ � ������� �� ������ ���������� ���������� ����:

������ ������ � ������� ������, ������� ������ ����������� � �� �������� � ������ ������ �������������� �������, ��� �������, ��� ��� ���� � ������� �������������� ������ ������� ������ ORA_Statement.

����� � ORACLE 7 �������� ����� OCI � CA-Visual Objects 2.x

����� ��������� �� ������ CA-Visual Objects 2.x � OCI

������� ���������������� CA-Visual Objects 2.x �������� ����� ������ ������������ ���������� ���������� ���������� ������ ������ � �������, ������������� �� DBASE. ���� ���� � �������� ���������� ������ (DESCTOP Systems) �����, ��� DBFNTX, DBFCDX, DBFMDX, DBFNDX. � ������� ������ ���������������� 32 ��������� ���������� � ����� �������� ������, ����������� Visual Objects. �������� ���������� �������, �������������� ����������� ���������������� � ����� ��������� ��� ��������������� ����������� ������ ������ � ���������������� ��������. ������� ��������� ��������-��������������� � ���������� �� ������ ��� ������������� ��������� Windows NT � Windows 95. ��� ������� � SQL ��������� � CA-Visual Objects ������������ ����������� ��������, ������������� � ���� ������ �������, ������ �������� �������� �� ���������� Microsoft ��� ��������� ODBC.

������ � SQL ��������� � CA-Visual Objects ����� ODBC ������� �������� ������ ������������������, ��, � ���������, �� �������� ������������ ���������� � ���������, �������� ���� ������������� ���������� (����� ��� ODBC, BDE). ����� ����, ����� SQL ������� CA-Visual Objects �������� ������ �� ����������� ����������. ��� �������� ������������� � ������ �����������.

�����������, ��� ��� ����� ���������� �������, ���� �� ����� ������� ����� ���� ������ ��� ����� � ��������� ��� ������. ��� ��� �������� ��� ����������� ������� � �������� ORACLE �� ������ OCI � � ��������� ������������������ � ������ �������.

��� ����� � CALL ����������� ORACLE ������, ��� ���������� ������� � CA-Visual Objects — ��� ��������� ��������� � �������� ����� Visual Objects. ��� ��������� ������������ ����������� ORACLE � �������� ����� � (��� ������ �����������). ��� ������, ��� ��������� ������ � ��������� ������� �� ������������ ������ OCI ������ ���� ���������� �� CA Visual-Objec ts.

����� ������������� ������� �������, ������� ������� �������� ������ CALL����������. ��� ������� � ORACLE �������� ���� ���� �������������� ��������� ������: ORA_Connect, ORA_Statement � ORA_Server.

ORA_Connect — �����, ���������� �� ����� � �������� � �������� ��������������� ��������� ��� ���� ����� — LDA � HDA.

ORA_Statement — �����, ���������� ������ ���������� �������� � ����������� ����� SQL����������� � PL/SQL �����.

ORA_Server — ��������� �� ������������ ������ CA-Visual Objects DataServer. ��������� �������� �������������� ����� � ������� � ����������� ���� CA-Visual Objects — DataWindow. ������ ��������������� ������ �� ����� ��������, ���� ��� �� ���������� �������� ������� ������ �� ����� ��������� J .

� ������ ������� ����������� ����������� ��� ����������� ORACLE ������� ������ 7.3.3 �� ����������� ������ � ������� ���� LONG � LONG RAW. ��������, ��� ������� ��� ��������. ����� ������ ���������� ���� �� ������������ ���������. ����� ����, ������� � ������������ ������ ������ � ���������� ���� ������, ��, ���������, ������ ������� ������ ��������� � ��� ����� ��������� ������, � ����� ����������� �� ��� ���� ���������� ����� ��������������. � ������, ��� ��� ������ �����.

OCI � �������� ����� CA-Visual Objects 2.x

�� �����, ��� ������� �������� � ���������� ������� �� OCIW32.DLL,��������� � ������������ ������ OCIAPR.H, ORATYPES.H, OCIDFN.H ��� ������� ������������� ������� �����- ���� ���������. ���, ��� ���������� ��� ������ ��������� � ������ Visual Objects ��� ��������� OCI � ������������ �� ������� ���������� OCI.

��� ������� ������� �������� ��������� LDA � ���������� �������� �������� �������:

MEMBER v2_rc AS SHORTINT

MEMBER ft AS WORD

MEMBER rpc AS DWORD

MEMBER peo AS WORD

MEMBER fc AS BYTE

MEMBER rcs1 AS BYTE

MEMBER rc AS WORD

MEMBER wrn AS BYTE

MEMBER rcs2 AS BYTE

MEMBER rcs3 AS SHORTINT

MEMBER rid AS RID

MEMBER ose AS SHORTINT

MEMBER chk AS BYTE

MEMBER rcsp AS PTR

MEMBER DIM rcs9 [ CDA_SIZE-_sizeof ( cda_head )] AS BYTE

MEMBER rd AS RD

MEMBER rcs7 AS DWORD

MEMBER rcs8 AS WORD

MEMBER rcs4 AS DWORD

MEMBER rcs5 AS WORD

MEMBER rcs6 AS BYTE

��� ������, ���, ��� ���������� ����� — ��� ������ ������������ ����� ������ � � CA-Visual Objects.

��� ������������� ������� OBINDPS ��� CA-Visual Objects �� ������ OCI ���������� OCI:

_DLL FUNCTION obindps ( cursor AS PTR , opcode AS BYTE , sqlvar AS PSZ ,;

sqlvl AS LONG , pvctx AS PTR , progvl AS LONG ,;

ftype AS SHORTINT , scale AS SHORTINT ,;

indp AS PTR , alen AS PTR , arcode AS PTR ,;

pv_skip AS LONG , ind_skip AS LONG , alen_skip AS LONG ,;

rc_skip AS LONG ,;

maxsiz AS DWORD , cursiz REF DWORD ,;

fmt AS PSZ , fmtl AS LONG , fmtt AS SHORTINT );

AS WORD PASCAL : OCIW32 . obindps

� ��� �������� ������� OLOG:

_DLL FUNCTION olog ( lda AS PTR , hda AS PTR ,;

uid AS PSZ , uidl AS SHORTINT ,;

pswd AS PSZ , pswdl AS SHORTINT ,;

conn AS PSZ , connl AS SHORTINT ,;

mode AS DWORD ) AS SHORTINT PASCAL : OCIW32 . olog

�������� ��� � ��������� �� �:

sword olog ( struct cda_def *lda, ub1* hda,

text *uid, sword uidl,

text *pswd, sword pswdl,

text *conn, sword connl,

�������� ����� �� ������� � ����� PRATYPES.H . �������� ������� ������� ��� ���������� ������ ���������������� � �����. ��� ����� s ����� ����� ��������� �� �������� ����������, u -�� �����������. ����� ����� ��������� , b , ��� ������ BYTE , ����� �����, ����������� ���������� ���� � ����������. ���� �� ��������� ��� ub4 — ������, ��� ��� ����������� �����, ��������� �� 4 ����, sb1 — �������� ����� �� ������ �����, � �.�.

�������� text * ������ ��������� �� ������, �������������� 0 ( unsigned char * ).

��� ��������� ������ OCI � ������ ���� ����������� ���� ���������� � �������� ��� ������ ������ ������� (� OCIW32.DLL ), � ����� �������� ��� ���������� �������� ���������� � �������� ��������. � ������ ������ PASCAL . ������ ������ � �����������, ���� ������, ��� ����� ������� 42. �� �� ������ ������������, � ������ �� ��� ��� ������ ( �� ������������ �� ������ ���������� ������ J ).

������ ������������� OCI � CA-Visual Objects 2.x.

������������ ������ ������������� OCI ���������� � ORACLE �������� �� ������� � ������ OCI First ���������� OCI. ��� ������ ������������� ������� �� ��� OCI �������� ��� ���������� SQL ����������� � ����� CA-Visual Objects. ��������� ������������ ������ ����� ������������� ������ ����� OCI ����������, ����������� ��������� ����� � ������.

� ������, ���� �������, ������������ ��������� LDA � HDA, ����� ���������� ������� � �������:

STATIC LDA IS cda_def

STATIC Cursor IS cda_def

STATIC DIM HDA[HOSTDATAAREA] AS BYTE

IF (Ret := olog ( @ LDA ,;

MessageBox ( SELF : Handle (),;


AsPsz (» ������ ������»+ Str ( Ret )+»/»+ Str ( LDA . rc )),;

��������� ������ � ������ ����������� ������ SQL ���������:

IF ( Ret := oopen ( @ Cursor , @ LDA ,;

NULL_PSZ , 0, 0, AsPsz ( sInUser ) , SLen ( sInUser ))) == 0

sL := [select * from spravka where f amil like ‘��%��%’]

IF ( Ret := oparse (@ Cursor , AsPsz ( sL ), SLen ( sL ), 1, 2)) == 0

MessageBox ( SELF : Handle (),;

PSZ ( «���� ����������� ������ statment «+;

Str ( Ret )+» / «+ AsString ( Cursor . rc )),;

Ret := oclose (@ Cursor )

MessageBox ( SELF : Handle (),;

AsPsz («���� �������� ������� «+;

Str ( Ret )+» / «+ AsString ( Cursor . rc )),;

����� � ����� ��������� ���������� ��� ������ ������� �������������� �������, ���� SQL ��������� ���� ������. �������� ��� ��� ������ OCI ������ odescr . ����� ���������� ��������������� �������� � �������������� ������ ��� �������� �������� ����������� ���������� ������� ������ � OCI ���������� � ��������� �������������� ������� ������� OCI ��������� odefin :

FOR pos := 1 UPTO NPOS

IF ( Ret := odescr (@ Cursor ,;

IF Cursor.rc == 1007

Mem2String ( ColumnName , LengthOfColumnName ) > )

arrCursor [ pos , 1],;

0, 0, @ rlen , @ rcode )

����� ���������� ������� — ���������� SQL ����������� � ������� ���������� � DBF �������, ������� ����� ����� �������� � BREWSER -�:

DBCREATE ( TmpDB := CreatTmp (), arrStruct )

IF ( Ret := ofetch (@ Cursor )) != 0

oDB : FIELDPUT ( AsSymbol ( el [3]),;

sL1 := Mem2String ( el [1], el [2])) > )

�������� �������� �� ��, ��� �������� ��������� ��� ���������� �������� �������� � �������� ������ ������������� ���������� (����� �������� odefin SQLT_AFC ) ORACLE ������ �������������� ������ �� ������� � ���������� ������. ��������������, ��������� �� ����� ���������� �� ���� ������, ������� ������ �� ����� ������������������ � ���������� ������, �������������, �� ��� ������� ����� ���� �������� � ���� DataWindow, ���� ��������� ����� ���� ���.

���, ��� �������� ������� — ��� �������� �������������� �������, ������� ������ � ��������� ����� � ��������, � ��� �� ���������� ������������� �������. �����, ��� �������� �� ����� ��������� ����� ��������.

� ���������� ������ ��������� ��������� � �������� [select * from spravka where famil like ‘��%��%’] ���������� ��� �������� ��� ������� �� 7 ����� �� 30000 �������:

� �������� ������� �� ��� ������� �� �++. ������ ������������� ������ � ��� ���, � ���������� �� ������ ������ ����������. ������ �������� ������ �� ������� � ������ OCI Connect Class .

����������� ������ ORA_Connect ��������� 3 ���������: ��� ������������, ������ ������������ � ������, ������������ ����� ������� � SQL*Net ������������. ����� ����, �� ������ ������ ��� ��� ��������� � ��������������� ��������� ������, ������� ��� � ����������: User, Password, Server .

����������� �������������� ��������� LDA � HDA, � ����� ��������� ������ ����������.

���������� ������, ORA_Connect:Axit(), ���������� �������������, ����� ����������� ����������, ���������� ������. � ��� ������ ������ ������������ �� ������� � ������������ ������, ����������������� ������������� ��� �������� LDA, HDA.

����� �������� ������ ���������� � �������� � ������������ �� ����: ORA_Connect:ORAconnect(),ORA_Connect: ORAdisconnect().

����� ������ ��������� ������ �������� ACCESS ����� LDA(), ������� ������������ ������ �� ������ � ��������� LDA ��� ����� ��������� ������� ������. ��� ������� � LDA ��������� �� ����� ���� ��������� �� ���� SQL ���������.

�������� ������� ���������� ������ ORA_Connect �� ������ ���������� � ������ Connect class test . ��� �������� ��� �� ����� ������:

IF oC2 : ORAconnect ()

MessageBox ( SELF : Handle (),;

PSZ («���������� �������»),;

MessageBox ( SELF : Handle (),;

AsPsz («���� ����������»+ AsString ( oC2 : RetCode )),;

����� ���������� oC2 �������� ����������� ������ ORA_Connect. ��� ����������������, ����� ���� ���������� ������ � ��������, � ����������� �������� ���������� ������������. �������� �������� �� ��, ��� ����� ORA_Connect:ORAdisconnect() ���� ������������, � ���������� ��������, ��� ����������� ���������� oC2.

��� ��, ��������, ��� ���������� — ���� ����� �������� ������ ��������� ������ �� ����� C++. �������� ������ ���������� � ������ OCI SQL Statemen t Class.

����������� ORA_Statement:Init(oConn) ��������� ���� �������� — ��������� ������ ORA_Connect, ������� ����� ���� ������ ���� ���������������, �, ����� ����, ������ ���� ����������� ���������� � �������� ��� ������ ������ ORA_Connect:ORAconnect(). ����������� ������������� � ��������� �������� ����������� ����������, ����������� ������ ��� ��������� CDA, ��������� ������ ������� OCI ��������� OOPEN � ������������ ���������� ��� ���������� ������, ������� ���������� ������������� ��� �������� �����������. ���������� ORA_Connect:Axit() ��������� ������ � ����������� ������.

����� ������������� ���������� ������, ���������� ������� SQL ��������� ��� ����������. ��� ����� ���������� ASSIGN ����� SQLtext .

� ���������, ������������ ����� ORA_Statement, ���������� SQL ��������� ��� ���������� �������� ���:

oStmt : SQLtext := [select * from spravka where famil like ‘��%��%’]

�� ���� �� ASSIGN ����� SQLtext ������ ������. ������, ��� ���������� — ��� ����������� ������ SQL ���������:

oparse ( SELF : Cursor , AsPsz ( SELF : SQLtext ), SLen ( SELF : SQLtext ), 0, 2)

����� ������ ��������, ��� DDL ������� (��� ������������� 4 ��������� oparse � 0) ����������� ����� � ������ ������ oparse , ������� ��� ��� �� ������ �� ����������� �������� ����� SQLExec , �� � ������ ������������, ��� ��� ��� ����� �������� � ������ �������� ��������� �� ������, ��������, ����� �������:

oStmt : SQLtext := [drop table emp]

�������� � ������ �Table or view does not exist�. �, �������������, ����������, ��� �� �������� ��� ���� ������� ���� � �� �� �������. ������ ��� ��� ������� ���������, � ������ �������� ������.

����� OCI �������� ODESCR ��������� �������� ������� ������ ������� �������������� �������. ���������� ����� �������� �������� � �������� ����� �� ���������� �������.

odescr ( SELF :Cursor ,;

� �������� �������� ������� ������������ ���������� SELF : ColumnCount � AccauntBytes . ������ ���������� ������ ����� ������� � �������������� �������, � ������ -���������� ���� ������ ����� ������ ������� (�� ��������, ����������� LONG � LONG RAW). ���������� � �������� ������������ ��� �������������� ������ ��� �������� �����, ���� ������������ ����� (OCI ������� odefinps ) ��� ��������������� ������.

��������� ����������� ����� ����� ��� ���������� �����, ���������� ������� ������������ HIDDEN ���������� Granulation , �� ��������� ������������� � �������� 20. ������, �� � ����� ���������� ���� �������� ��� ������ ASSIGN ������ Granulation() .

� ���������� ��� ���������� SQL ��������� � ��� ������� �� ������� ���������� ����������� � ����� Granulation , ��� ����������� �������� ������ ������. �����������, �������� ������� SQLExec � SQLFetch ����������� ����������� ������� ������ �� ����, ��� ��� ��� ������ ���� �������� ����������� �������� ������������������ ��� ��������� ��������� ���������.

����� ORA_Statement ������������ ���������������� ������ �� ������� ������ � ����� �����������, ���������� ��� � OCI ��������� � �����. ����� SQLFetch ��� ������ ����� ������ ����������� ���������� ��������� ������ �� ������� ������, ����� ��������� ���������� �������� ����� ��� ���� ������ ��� ������ ������ FIELDGET(). ���� SQLFetch ���������, ��� ���� ������� ����������� �� ������� ������ Granulation , �� ���������� ���������� ������ ���������� ���������� �� �������������� �������, ��� ���� ��������� ������������� �������� ���������� EOF , �� ������� ����� ���������� ��������� �� ����� ��������� ������.

����� ORA_Statement �������� ��� ����� ������ ������������ : �� ����� ��������� ������� ������� �������� � SQL ������������. ��� ������������ �������� �� ������ �� 31000 ����� ����������������� ����������, ��� �����, ��������, ��� ��������� INSERT � ����� �������� ��������. ������ ��������, �� ��� ������������, ��� �������� ������� �� ������������ �� BDE, �� ODBC.

����������� ��� ����� ��������. ������ — SQLDefParam ( aDescribeParam ) ������ ��������� ��������� �������� ������� ����������. ��� ���������� ������ �������� �� ���������� ���������� ����������:

������ ������� ������� — ������, ���������� �������� ��� SQL ���������. ������ ������� — ������, ��������� �� ������ ������� : ��� ����� ���������. � ������ ������ �������������� 4 ���� ����������:

LONGINT, SHORTINT, INT, BYTE, WORD, DWORD — «I»

REAL4, REAL8, FLOAT — «F»

������ ������� ����������� ������ ��� ���� STRING � �������� ����� ������, �� ���� ��������� ������� — 0.

oStmt : SQLtext := [INSERT INTO VV VALUES(:Par1, :Par2, :Par3. )]

���� ������ ���������� ��� � ����������� ������� VV ����������� �������� �� �������, ������������ ����� ��������� SQL �����������. �� �����, ��� ������ �������� — ����� �����, ������ — ������ ������� 10 �������� � ������ — ����� � ��������� ������.

������ ����� ��������������� �������� ������ � ����������� ��� ���������� � SQL ����������:

��� ������, � ������� ���������� 3 ������ � ����������� ����������.

������ ������ ������ SQLPassParam — ����� OCI ��������� obindps , ������� ��������� ������� ������ �������� � SQL ����������.

��� 3 ������ ��������������� ������� � ����.

������ ����������������� ������� � ������� ����� ORA_Statement �������� ��� ��������������� �������, ����� ��� ����� ��������� � ��������� ������ � ������� ( SQLDescribeError () ), �������� � ����� ���������� ( SQLRolBack () , SQLCommit () ), ������ ���������� � ��������� ��������� ������ ( ACCESS DBStruct ), � ��������� ������.

������ ���������� ������� � �������������� ������ ORA_Statement.

��� �������� ����������������� ������ ORA_Statment ���� ��� ������� ������, ����� �������� ��������� � ������ Statment Test Of OCI . � ������� � ������������� � ������� ��� ������ ������ ORA_Connect . � ���������� ������ ����:

������������ ����� ����������� ������ ����� ���������, ��������� ��� ���������� ORACLE ��������. ����� ������� ������ ����������� ��������� �� ����������� ������ ������������� ASSIGN ���������� SQLtext ������������������� ������� ������ ORA_Statment . ������ ���� ��������� ���������� ���������. ���� ��������� ����� �� ������ ��������� ����� (������, ��� 0), �� ������ ��������� �� ���� ������� �������������� ������� (����� Fetch() ) � ������� ���������� ������� �� ���������� ������, ������� ����� ������������ � ���� DataWindow ��� ������ ������������ ArrayServer , ����������� ��� ��� ��� ���� ����� (������ Array Server ):

� ������ ���������, ��� �������� ���:

IF oConn : ORAconnect ()

oRW : oDCMLE_E : CurrentText := [select * from emp]

oStmt : SQLtext := AllTrim ( oRW : oDCMLE_E : CurrentText )

IF oStmt : SQLExec ()

IF oStmt : SQLColumnCount > 0

WHILE ! oStmt : SQLeof

FOR pos := 1 UPTO oStmt : SQLColumnCount

AAdd ( arrR , oStmt : FIELDGET ( pos ))

AAdd ( arrF , arrR )

FOR i := 1 UPTO oStmt : SQLColumnCount

oStmt : SQLGetColumnName ( i ))

oDW : Use ( oArrServ )

oDW : ViewAs (#BrowseView)

MessageBox ( SELF : Handle (),

PSZ (‘Error execute statement!’), PSZ (‘-!-‘), MB_OK )

MessageBox ( SELF : Handle (),

PSZ (‘Connect error!’), AsPsz ( oConn : RetCode ), MB_OK )

������ ���������� �������� ������� � ������ ORA_Statement.

����� ORA_Statment � ��������� �������� �������� �����, � ����� �������� SQL ����������� � �������� ���������� ��������� ��������. ����� ����, ����� ��������� ��������� ����� ������ ������� �������� � SQL ������������. ��� ����������� ������������� ������, ����������� � ������ Bind Test of OCI . ������ ������� �������� �� ������� SQLDefParam � SQLPassParam . ������ ����� ��������� ������� ���������, ������ — ��������������� �������� ������ � ����������� ��� ���������� SQL �����������:

oStmt : SQLtext := [insert into emp (empno, ename, job, mgr, deptno) values (:empno, :ename, :job, :mgr, :deptno)]

����� ���������� ������������ ����� ��������� � ������� EMP �������� ������� ������, ��������� � ������ SQLPassParam (����, �����������, ����� ��� � ������� � ������������ �����������.)

������ �������� ������ �� DBASE � ORACLE � �������������� ������ ORA_Stateme nt.

��� �������� ���������� ������ � ����� ������ ����������������. ��������� ������ ������� ������ �� ������� DBF � ������� ORACLE. �������� ��� ��� ������ ������ ORA_Statment � ����, ��� ��� ��������, ������� — SQLDefParam � SQLPassParam . ������ �� ������ ���������� � ������ ExpLORE .

����� ������������� �������� ORA_Connect � ORA_Statment ����� ������������ ASSIGN ���������� SQLText ������ ORA_Statment ��������� ������ ������� � ����� ORACLE ����������� ���������. ��� ����� ����������� ��������������� ������� DrTab.sql � CrTab.sql. (������ ����������� ���������� �������� � ���������� SQLText ). ��� ��� DDL ������� ����������� �� ������ PARSE, ���������� ��������� �� ���������.

�������� ��������� SQLText ������������� ����� ���������� � INSERT � �����������, ������������ ��� ���������� ������� SQLDefParam � ����������� ���� �� BDF �����, ������� ��������� ������������ ������ InArr . �� ���������� ���������� ����� ������������� �������������� �������� ���� ������ ����� ������� SQLExec ������������ �� ������.

�������� �������� �� ��, ��� �����, ����������� ��� ������ ���������, ������������� ������ �� ������� ������� DBF � ����� Visual Objects. ������� �������� ������� �� ������ ���������� ����� ���������!

� ���� ����� ����� ���������, �������� ��� �� ���� �� DBF ��� ������� ���������� �� ������ � ������� ����� ������.

����� ORA_Server — ��� ��, � ���, ��������, ������ ������� ����� ���� �����-�� �����, ����� �������� ������ �� CA-Visual Objects, ������� � ORACLE ����� ��� ODBC ������.

��� ��� �����, ����� ���� ����-�� ��� ����������� � ������. ORA_Server — ��� �����, ��������� �� ������������ DataServer, ���������������� ��� �������� ������ ��� ��������� �� �������������� ������� �� ORACLE �������. ��� ������, ��� �� ����� ������ ������ ������ ORA_Server ��������� � ������������ ������� DataWindow ������� USE � �������� ������ � ������� � ��������� ���� Browser � use-��� �� ��� ������� ���� ������.

����� ��������� �� ������ ������� �������������� �������. ���� � ���, ��� ORACLE ������������ ������������ ������ ������ (�������, ����) � ����� ����������� — �����. ��� ��������� ORACLE — �� ������ �������� �� ����� ������ ����� ������ �����, �� ��������� ORACLE �� ����� �� ���������� � ����� � ����� ���������� �� xBase ����������, ��� � ����� ������ ������� ����� ������ �� ���� � ����� ������� : � � ������, � � �����.

��� ��������� ������ ORA_Server ����������� ������ ����� ���������� ����� ����� �����������. ���������� ����������� � ������������� ������� ��� ��������� �� ������� �� ������� ���������� ����������� ���������� �������� ������ � ������ ������. ��� ����������� ������, �� ����������� ��� � ������ ��������� ORACLE, ��� � � ��������� ������ ��������������. BDE � ODBC �������� ����� ����� : ����� ���������� ������.

�����������, ��� ���� �� ���������� � ������ ������-������ 10000 ������ � ������� ������� ������������� �� ������ �����, �� ������� ������ �� �������� ������ ��� ��������� ��� ������ ������ � �������� �� ����� ��� 9999 ������� ��� ����, ��� �� �� ������ ������������ �� ��������� ���� ������. ���� ������������, ��� ����� �������� 100 �������, �� ORA_Server ������ ���������� 999900 ������ FETCH , ���, �����������, ������� ������� � ��������.

������� ��� ������ � ������� ORA_Server ��� �������� ������� ������� ���� ORACLE � ��������� SELECT �� ������� ��� ���������� : ������� �� ��������� ������� ���������� ���������� �������, ��������������� ������������� ��������. � ���������������� ��-�� CLIPPER� : — �������� � Browser ��� ������� � ���� ��������� ������� � ������� �� ��� ������������� ��������, ����������, ��������.

�������, �����- ����� ��������� � ������� ORA_Server ����� �������� ��� ������� � 10-15 ����� �������.

� �� ���� ����������� �������� ��� ������� ������ ����� ORA_Server , ��� ����� ���������� � ������ ORA Server , �� ��� ������������� ����� ���������, ��� ��� ��������� ������ �� ���������� ����������� CA-Visual Objects.

������ ������������� ������ ORA_Server.

IF oConn : ORAconnect ()

oRW : oDCMLE_E : CurrentText := [select * from emp]

oStmt : SQLtext := AllTrim ( oRW : oDCMLE_E : CurrentText )

oW : Menu := StandardShellMenu <>

oW : ViewAs (#BrowseView)

MessageBox ( SELF :Handle (),

PSZ (‘Connect error!’), AsPsz ( oConn : RetCode ), MB_OK )

����� ORA_Server � �������� �����������.

������� ������ ORA_Server ���������� ��� ������������� � �������� ��������� ������ ������ ORA_Statment. ���� �������, ���� ����� �������� ������������ ���������� ��������� � ����������� SQL �����������. ��������� ��� �����������, ����� ������ ������������������� ������. ������ ������ ������� �� ������ ����� � ������ ORA Server Test 1.

�� ����, �������, ���, ������������ ������ CALL ���������� � CA-Visual Objects.

����������� ������������ ������ ��� ������ � ������ ���� LONG. �������������� ����� ORA_StoredProc � �� �������� ����������� ������� ��� ������ � ORACLE 7 � ����� ���������������� CA-Visual Objects. �������.

����� � ORACLE 7 �������� ����� OCI � Borland �++Builder 3

�� ��������, ���������� CALL ���������� ��� C++ Builder �������� ��������� �������, ������������� ���� ����� ��� Borland C++ 5.01, � �������� ���������� VCL. ������� ������������ ������������� ������������������� ���������� ������������ ��������� �����, ��� ����������� �������� � �������, ������� ��������� ���������� � Object Inspector � ������ ���������������� �������������.

������������ ������������ ������� C++ Builder ����� ��������� �������� C++ ���������� � �� ����� ��� ����������� �������� ���������� ����������. �������� ������������ ����� C++ � C++Builder ��� ������ � �������������� ���������� ORA_Connect:

�������� ��� C++ � ��� ��������.

� ��� ��� C++Builder:

class PACKAGE ORA_Connect : public TComponent

Lda_Def* __fastcall GetLda( void )< return &LDA;>;

__fastcall ORA_Connect( TComponent* Owner, AnsiString sUser,

char __fastcall ORAconnect( void );

void __fastcall ORAdisconnect( void );

AnsiString __fastcall GetUser( void );

void __fastcall SetUser(AnsiString sUser);

AnsiString __fastcall GetPassword( void );

void __fastcall SetPassword(AnsiString sPass);

AnsiString __fastcall GetServer( void );

void __fastcall SetServer(AnsiString sServer);

bool __fastcall GetActive( void );

void __fastcall SetActive( bool ActFlag);

__property Lda_Def * Lda = ;

�������� �������� �� ������ __published , ����� ������� �������� � Object Inspector.

�� �� ��� � ������������:

�� ����� ����� �� Object Inspector ���������� �������� Active � TRUE, ����� ���������� ������� � ������� � Design Time, ���� ��������� ����������� ��������� �������� � User, Password, Server. ��� ��������� ORA_Connect ����������� �� ����� �� ������� ���������, � ������� ���������� ����� ����������� ����������:

� Run Time ��� ���������� ���������� Active � TRUE ��� ��������� ����������. ��� ������� �� ������� ������ Connect:

void __fastcall TForm1::Button1Click(TObject *Sender)

� ��� ������� �� Disconect:

void __fastcall TForm1::Button2Click(TObject *Sender)

������ ������� ���������� ��������� ���������� � ������ � �������. ���������� ����.

� ������� �� ������� �� C++ ������ ��������� ��� �++ Builder ����������� ����������������. � ���� ��������� ������ ����������� �� ������ ������, �� � �����, � ������ ������� � � �����. ��� ����������� �� ���� ����������� ������. ����� ����, ��������� ������������� ����� �������, ��� �� ����� ��������������� �� ������ C++ Builder � � ������� ������������, � �������� �� �������� � ����� ������. ��� ���������� ������ ���������� ������, ��� ���������� ������� � ��� ���������� ������� � ��������, ��� ������ ��������� ORA7_Connect. ����� ����������� SQL ��������� � ������ ����������� � �������� ��������� ��� �������, ��� ��������� � ��� ������ ORA7_Connect ���� ��������.

����� C++ Builder ����������� �������������� ������� � ��������������� ������������ � ������ �����. ���� �� � ������ �������� ������, ��������, ������� � ����� ��������� ORA7_Connect ��� ��������� ��� � ���������� ���������, �� ��������� � ��� ������ ORA7_Statment ������ ������������� ���������� �������. ��� �������� ORA7_Connect � �������� ������ �� ����, ������, ����� ����, ���� ������ �� ��������. ��� �������� � ���������� ��������� ORA7_Connect ��������� � ���������� ��������� ORA7_Statment. � ��� �����, � ���� �������� ���� �������, ��� ��� ������ ������ ���������� ������ ��� �������������� ���������, �� ��� ���� ��� ���������� ����� ������ � ����������.

�������� �� �������������� ������� ���� ������ �������������� ��� ������ ������������� �������. � ORACLE 7 ���������� ������ �� ������� ������ � ����� ����������� � ��� � ������� �������������� ���������. ��� ������� �������� �� ���������� ����� ����������� ���� ��������� ������ � ���������� ��� �� ������� �����. ��� �����, ������ ���������� � ������ ������� ��������, ��������� ORACLE �� ����������� ������� ������������ ������� ��� ���� �������� ������� � ����� � ��� �� SQL ������������. ����� ����, ���� ������ �� ������� � ������� ���� �������� ����� ����������. ������ ������� ��������� ������������� ������������ ��� ����� ��������, ������ ������������� ����� ������� (�������� Portion ) � ��������, ����������� ����������� ��������� ���������� ��������� �������. ��� ���� ������� �������, ��� ORACLE ����� �������� �� ���� ��� �� ���� �� ����� ��� 32768 �������.

���� �� ����������� ������ ������ ������ �� ������� (�� ����������� �������� ���������� �������), �� ��������� ORA7_Statment � ��� ��, ��� ��� ����� � ������ ������� ��� ���� �� ����� �� ������ �������� (���������� ������, ��������).

������ ������������� ������ ORA7_Satment

�������� ������, � �������, ��������� � ���������� Statment Test 1. �������� ����� �������� ����, ����������� ���������, � ������� ����� �������� �� ������ �������� ����� ���������� ��������� ��� ORACLE 7, � � ������ �������� ���������� ������. � ���� ���� ����� ��������� �������� � ��������. ��� �������� ������, �����������, �� ��������. � ����� ������ �� ������ �������� ������� � ���������� ������ ��� � ������ ��������. ���� SQL ���������, ������� �� ����� � ������� ����� ������, ���� ������, �� ������ ����������� ������������ ����� ������� � StringGrid. ������� ���������� ����� �� ������ �������� � ����� ������ �������. �� ������������� ��������� ���� ����������� ����� ����� ��� 20-30 �����.

������ ������� �� ������ ���������� ORA7_Statment, ������� �������� �� ���������� SQL ���������, ���������� ������, � ����������� �� �������������� ������� (������ ������).

���������� SQL ��������� ���������� ��� ��������� � TRUE �������� Active ���������� ���������� ORA7_Statment . ������� ������ �������������� ����� ������ ������ RawFieldGet , ������� ��������� ������ ������, �.�. ������ � ������� ORACLE, ���� ����� ����������� ���������, ����������� ������ ���� ������, ������� NULL �������� � ������, ������ � �.�. ��� ��� ���������������� � ����������� ��������� ��� ��������� SelectListItem . ����������� ���������� ��� ������ ������ SQLFetch() . ������, ��������� � ��������� SelectListItem , ���������� � ���������� ������� � ���������� � Grid.

��� ����� ���������, ������� ���� ���� ���������� (�������� � ������������):

void __fastcall TmFrm::RunProc(TObject * Sender)<

ResaltGrid->RowCount = j + 1;

for (i=0;i cCount;i++)<

ResaltGrid->Cells[i+1][j] = AnsiString((char*)sItem->uValue, sItem->uValueLength);

oDate = (ORA_Date *)sItem->uValue;

oDateTime1 = EncodeDate(wYear, oDate->cMonth, oDate->cDay);

oDateTime2 = EncodeTime(oDate->cHour-1, oDate->cMinute-1, oDate->cSecond-1, 0);

ResaltGrid->Cells[i+1][j] = oDateTime1.FormatString(«dd.mm.yyyy») + » » + oDateTime2.FormatString(«hh:nn:ss»);

���������� ��� ���������� �������������� ���� �� ������� ORACLE � ������, ���������� VCL.

��������� ORA_Date � ��������� �������� ����/������� � ������� ORACLE:

unsigned char cCentury;

unsigned char cYear;

unsigned char cMonth;

unsigned char cDay;

unsigned char cHour;

unsigned char cMinute;

unsigned char cSecond;

��� �������������� ����/������� � ���� ����/������� ���������� ������������� ���������� ���� ��������� � �������������� �����, ��������������� ���������� �����������, ��������� � ��������� ��������.

sItem->uValue ������ ��������� �� ����� ������.

���� sItem->uValueRCode ��������� sItem ������ ����� ������ ORACLE ��������� ��� ����� ���� � ��� ���� ������ (��� ������� ����������� ��������). ���� sItem->uValueRCode ����� 1405, �� ���� �������� NULL ��������.


sItem->uValueT ype � ������ ��� ������ �� ��������� sItem->uValue.

�������� Eof ���������� ������ ORA7_Statment ORA_Statement1 �������� ���� ����� �������������� �������. ���� ������� ������ ������������� ����� Eof ��������� �������� TRUE .

��� ��������� ��� ������ ��������� � ������:

Baind ������ ��� ������ ORA7_Satment

���������� ������� ���������� � SQL ���������� �������������� ��� ������ ���� ������� ���������� ORA7_Statment : SQLDefParam � SQLPassParam . ������ ���������� �����, ���� � ����� ������� ����������. ������ ������������ ���������������� ���������� ������� � ����������� ���������� ���������� � SQL ����������. ���������� �������� ���������� � SQLPassParam � ���� �������. �������������, ��� � ������� �� ������������ ��������� VCL �������� ���������� ������ �������� ������������� ������ � ��������� ��������. ��� ������, ��� �� ������ ����� ���������� INSERT �������� �� ������ ����� ��������� ����� ����������.

������ ������ ������ SQLPassParam �������� �� OCI ������ obindps.

������ SQLDefParam ���������� ��� ���������. ������ — ���� ������, ������ ������� �������� ��������� ���� ������� �������� ��� ������ ���� ����� ��������� DescrParStruct :

Char ParType; //’C’, ‘I’, ‘F’, ‘D’

int ParLength; //Only for «C», all athers — 0.

���� ParType ����� ��������� ������� ‘C, I, F, D’, ��� ������ ‘������, �����, ��������������, ����’. �� ������ �������� ��������� ������ ���� �����. ��� ����������� ���� �� ������ ���������� ������ ������, ������������ �� ������. ��� ��������� ������ ��������� ��������� ��������� � ‘:Par1’. ��������� ����������� ������ �� ������ � ����� ������ ���� ������� — IN. (���� ������ ��������, �������� ���, ����������, ����).

������ SQLPassParam ���������� ��� ���������. ������ ��������� �� ������ ������, ������ ��������� �� ������, ������������ ����� ������� ���� � ������ ���� ������ ������� ���������.

��� ������� � ������� ��������� ���, ������� ��� � ��������������� � ��������.

������� ���������� ���������� ������� �� ����������:

CREATE TABLE VVLAD(

����� � ����� C++ Builder ������ �� ����� ��� ���������� �� �������� OCI 73 � ORA7_Connect � ORA7_Statment :

��� ORA7_Connect ������������� �������� User, Password, Server � ������ ������� ��������:

��� ORA7_Statment ������������� SQL ���������:

‘insert into vvlad (f1, f2, f3, f4) values (:ff1, :ff2, :ff3, :ff4)’

� ������ ���� ��������.

����� �������� ������� �� ������� ������. ��������� ������ ��������� ��������� ����� � ������� VVLAD:

void __ fastcall TForm1::Button1Click(TObject *Sender)<

DescrParStruct ds[ 4 ];

ds[ 0 ].ParName = «:ff1» ;

ds[ 0 ].ParType = ‘I’;

ds[ 1 ].ParName = «:ff2»;

ds[ 1 ].ParType = ‘C’;

ds[ 1 ].ParLength = 255 ;

ds[ 2 ].ParName = «:ff3»;

ds[ 2 ].ParType = ‘C’;

ds[ 2 ].ParLength = 50 ;

ds[ 3 ].ParName = «:ff4»;

ds[ 3 ].ParType = ‘D’;

s1[ 0 ].f2 = «������ ��� LONG — ����� 1»;

s1[ 0 ].f3 = «������ ��� CHAR — ����� 1»;

s1[ 1 ].f2 = «������ ��� LONG — ����� 2»;

s1[ 1 ].f3 = «������ ��� CHAR — ����� 2»;

s1[ 2 ].f2 = «������ ��� LONG — ����� 3»;

s1[ 2 ].f3 = «������ ��� CHAR — ����� 3»;

s1[ 3 ].f2 = «������ ��� LONG — ����� 4»;

s1[ 3 ].f3 = «������ ��� CHAR — ����� 4»;

s1[ 4 ].f2 = «������ ��� LONG — ����� 5»;

s1[ 4 ].f3 = «������ ��� CHAR — ����� 5»;

����� ������� ������ ����� ����������, ��� ���������� � �������� VVLAD ����� ��������� ��� ����� ���������. � ������������ ���������� ����������� �������:

����� ���� ������ �������� � ����� C++Builder, ���������� ������������ ��������� � ��������� �� ������������ ���������� TdataSet . ����� ������� � ���������� ���� �������� ������ ��� Dbaware ���������. ����� ��� DBGrid, DBNavigator, DBText, DBEdit � ��� �����. ��� ����� ��� ��������� ��������� ������ � ����� ���������������� � ������ ������ ���������� VCL � ����� ����������� ���������� ������. ���� ����� ���������, �� �������, ������ ��� �� �����, ������, ��������, � ������, �������� �� ������ ������ ������ � �������� �������������� ������. ���������� ��������� �������� ��������� �������� ������� � ���������� � � �� ���� ������������� �� ����. ������ ������ ��� ��� �� �����, ��� ��� ����� ��� ������ ��������, ���������� ���������� 23 ����� ����������� ������, ��������� ����� ������� �������� ������ ����������� �� ��������� ������, ������ ���������� ������ � ����. ��� �� ����������� �����, ��������� ��������� BookMark.

���� ���������, ��� ����������� ���� ����� ���� ��� ������, ��� ��������� ���������� ORA7_Statment. ���, ��� �� �������� ����� �������� ������� � ���������� �� TdataSet ��� �������������� 23 ������ �� ��������������� � ���������� ORA7_Statment.������ �������� BookMark � ����������� ����� �������� ��� �� ��������.

����������� ���������� VCL ��������������� ��������� �������������� ������������ ��� ���������� ���������� ������. ���, ��������� ����������� ����� GetBlobStream , �� ��� ����� ����������� ������ � �������� ���������. ���-�� ���� ���� LONG � LONG ROW. �������� ����� ����� ��� ���������� ����� ������ �� ������ � ��������� ������ ������ � ��������� ��������, �� ��� �������� ����������� ���� ���������. ��� ������, ��� ��� ���������� ���������� �� ����� LONG � LONG ROW ���������� �������������� ���� (PieceWise ��������), ������� �� ����������� � ����� �����.

��������� ������ FindRecord ��� Locate, �� ����������� �������� ������ � ����� ��������� ������ ������ ������ (��� �� ��� ������ ������� ���� ������ ��������).

� ��� �����, � ���� ��������

� ����� ������ � ����������� ORA7_Query (����������� �� TDataSet ) �� ��� �� ���������� �� ����, � ���� ��, ��������, ��� ��������. �� ����� ���������� ORA7_Connect . ��������������� ������� � �������. ����� ���������� ORA7_Statment , ������� ����������� � ORA7_Connect . ��������������� SQL ��������� � ��������� ����������� � �������� ���������. ����� ORA7_Query ������������ � ORA7_Statment , ��������������. �, �������, ����������� TdataSource � ����� DBAware ���������. � �������� ������ �� ��� � ��������� DBGrid .

��� ��� �������� ��� ��� � Design Time:

OCI ��� ORACLE 8

� ���� ������� � �� ���� ��������� ��������� ���� OCI ��� ORACLE 8. ��� ������� � ������� ������� � ���, ��� ���������� ��������� ������ � ��������� ORACLE ������� �� ���������� �� ��������� � OCI ORACLE 7. ���������� ������ ����������. �� ����������, ���� �������, ������������. �� �������� CALL ���������� �� �������� ����� �� �����. ��� ����� ��� ���� �� ������, ��� ������ ������ DLL ���������� OCIW32.DLL, �������� 17920 ���� ��� ��������� CALL ���������� ���� ������� ����� ���������� ORA803.DLL �������� ��� (!) 1646592 �����. ������ ������� ������� ���� � ���������� ������� �� �������� OCI 8 �� OCI 7.3. ����� ��������� ����������, �����������, �������� � ������������.

��������� OCI ����������.

����� ��������� OCI ���������� ��� ORACLE 8 ����� �������� ������:

�������� ������� ���� ����� �� OCI 7.3 Realise — ��� ��������� ������������� � ����������. ��� ���������� ��������, � �� ���� ������ ��������������. � OCI ORACLE 8 ��� ������� �������� LHA, CDA � HDA. ��� �������� ������������� �� Handler -��.

Hendler-� — ��� ��������� ������, ������� ������ �� ������������ (�� ������������). ���� ��������� ��������� ������ � ����������� �� ��� � �� ��� ����� ��� �� ��������� ������� �� ��� ��� ���� Handler-��. � �����-������ ��� ���������� ����������� �������:

typedef struct OCIEnv OCIEnv; /* environment handle */

typedef struct OCIError OCIError; /* error handle */

typedef struct OCISvcCtx OCISvcCtx; /* service handle */

typedef struct OCIStmt OCIStmt; /* statement handle */

typedef struct OCIBind OCIBind; /* bind handle */

typedef struct OCIDefine OCIDefine; /* Define handle */

typedef struct OCIDescribe OCIDescribe; /* Describe handle */

typedef struct OCIServer OCIServer; /* Server handle */

typedef struct OCISession OCISession; /* Authentication handle */

typedef struct OCIComplexObject OCIComplexObject; /* COR handle */

typedef struct OCITrans OCITrans; /* OCI Transaction handle */

typedef struct OCISecurity OCISecurity; /* OCI Security handle */

��� ������ �� ����� 12. ������ Handler ��������� ��� ���� ��� ����� ���� ������ � ORACLE ���������. �� ���� Hendler-� ������� �������� ��� �� �����������������. � �� ��������� ��� �� ‘�����’ ���������. ����� ���� �������������� ������������� ��������� �������������� Hendler-��:

����� Handler ���������� ���������������� � ������ ������ � ��������� ��� ��������� ������ � ��� (����� Define, Bind � Describe, ������� ���������������� � ������������� �������������).

���� �� ������������ Handler, �� �� ������������ ��� ��������� Handler-�.

�� ������� ������� �������� ����� Environment Handler , � ��������� �������� ����� ��� ���������, � ��� ������ Handler, ������� ���������� ����������������.

Handler-� ���������������� �������� OCIHandlerAlloc � ������������� �������� OCIHandlerFree , ����� OCIEnv . �� ���������������� �������� OCIEnvInit . ����� OCIEnvInit ������ ���� ������ � ����� OCI ��������� ��� ORACLE 8, ������� �� ��������������� ����� ������� OCIInitialize , ���� ��������� ���������� � OCI ��������� (THREADER, OBJECT � �.�.) � ���������� � �������� ������������� � ������������� ������.

����� ���������������� Handler-� OCITrans , OCIServer , OCISession � OCISvcCtx . Handler OCISvcCtx ������������ �� 3 ���������� ����������� �������� OCISetAttr . ��� Handler ��������� �������,� � ��� ������ ������ ����������� ������� ��� ���������� SQL �����������. ��� ������, ��� �� ������ ��������������� ��������� Handler-�� OCIStmt ��� ���������� SQL ��������� � ��������� �� � ����� ��������� ��������� (��� ������ � � ����� ��������).

����� ����� OCIStmt � OCISvcCtx �������������� ����� ���������������� �� �������� � OCI ������� ���������.

����� Handler ����� �������� � ���� ��������, ����� � ��� ������� ������� �� ���� ������ Handler-�. �������� ����������� � ��������������� ��������� OCIAttrSet � OCIAttrGet . ��������, ��� ������������� Handler-� OCISession ��� ���������� �������� ���������� � ������������ � ������. ��� ��������������� ��� ��� ��� ����� ������� (� ������ ���������� ��� �� Object Pascal �� Delphi 4):

OCIAttrSet( usrhp, //Session handler

OCIAttrSet( usrhp, //Session handler

����� ����� OCIStmt � OCISvcCtx �������������� ����� ���������������� �� �������� � OCI ������� ���������.

����������� ����� ������ �� Handler-� � ��� �����, ��� ��� ���� ������ �� ����������� ������� ������ ����� ����� ��� ������������ �� ���������. ������� �� �� Handler-�� � �������� � ���, ��� ��� ����� ��� ������������� ������ �����. �� ����� �������� � ��������� Handler-���. ����� ����, ��� �� ������� ����, �� ��������� ������ ������ � ���� ����� ����������� �������, ���� ��������� �������� Handler. ����� ��� �� �������� � �����������, ������ ��������� ��� �� �����, � SnapShort-�, BLOB-�, ROWID � ��� �����. � ���, �� ����� ����, ����� ������. �� ������ ������ ������ � BLOB-��� ������� ���������� � ��������� � ������� � ������ LONG � LONG ROW. ����������� ����, ��� ��� �������� FETCH � ������ ��������, ����� � �������������� ������� ������� ���� BLOB � LONG, LONG �� ������ �������� ������ ���� ������, ������� ����������� ������� ��� ������ ������ � �������. BLOB �� ������ ������ ����. � �������������� ������ ������������ ����������, ������� �� ������ ���������� � ����������, � ��������� �������� ��� ���������� � ������� �� ����� ����������� (���� �� ������� � LONG-�).

������������ ����� 5:


    • OCISnapshot � SnapShort ����������.
    • OCILOBLocator � BLOB ����������.
    • OCIParam � ������������ ��� �������� ������� � �������� .
    • OCIRowid � ������������ ��� ����������� ROWID ��������.
    • OCIComplexObjectComp � ������������ ��� ����������� �������.

�������� ���� ��� ��������� OCI 8 ����������.

��� ���������� ������ SQL ����������� � ����� ��������� ��������� ����:


    • �������������, ����������, �������� ���������������� ������.
    • ���������� SQL �����������.
    • Commit ��� Rollback.
    • ���������� ����������.
    • ��������� ������.

���������� ��� ���� ����� ��������.

�������������, ����������, �������� ���������������� ������.

������, ��� ���������� , — ��� ���������������� �������. �������� ��� ��� ������ ������� OCIInitilize. � �� ���������� �� ���������� ����� ������������� �������� (�������� mode). �� ������ �������, ��� ���� ��������� �������������, ��� �� ������ ������������ ��������� �����. ��� �� �� ������ ������� ����� �� ��������� (�� �������������, ��� ������������� ��������� �����). � ������ ���� ������� �� ��� �� ���������� ������ ���� ��������, ����������� ��������������� ������. ���� ��������� ���� NULL ��������, �� ORACLE ���������� ����������� ������� ��� ����� ������������ �������.

������ ����������� ��� — ��� ������������� Handler-��. � OCI 8 ������������� ��� ������������������ ������� � OCIHandleAlloc � OCIHandleFree. ���� �������������� Handler, ������ ��� �����������. �� ������ ���������������� ��� Handler-�, �� ����������� ���, ������� ���������������� ������ � ������ ������� OCI, ��������, OCIBindByPos.

�������� Handler OCI ����� ���������������� �������� OCIEnvInit().

������ ��� � ��� ���������� � ��������. ��� ���� ���� ���� ������� OCIServerAttach(). � ����� ��������������� ������� OCIServerDetach(). �������� ���������� ��� ���� ������� ������ Server Handler.

���������, �������������� ��� — ��� �������� ���������������� ������ �������� OCISessionBegin. �� ���������� Handler ������������ (OCISession), � ������� ��� �������� �������� (�������� OCIAttrSet), ��������������� ��� ������������ � ������. ������, TNS ����� ������� ��� �� �������� ��������� � Server Handler. ������ ������������ ����������� �� ������ ������� OCISessionEnd().

���������� SQL �����������.

�������� ���� �� ���������� SQL ����������� ����� ����� ������������������ ��������� ������:

�����������, ��� �� ���� SQL ��������� ������ ������� ����� ������ ���� ��������� �������, ����� ��� ���������. ������ ����� �������� �������� ������ � ����� � ��������� ������ ������ (SQL ����������� SELECT). �� ��� ������ SQL ����������� ���, ��� ����� �������, — ��� ���������� ��������� �����.

Commit ��� Rollback.

���� ���������� ��������� ��������� � ���� ������, ��������� �� ����� �� ������� OCI ��������� OCITransCommit() . ������� ������������ � �������� ��������� �������� ������� � ������������� ��� ��������� � ����, ������������ � ������ ���������.

���������� ����� ���� ��������� ����� �������������, ��������, ����� �� ���������� SQL ����������� �������� OCIStmtExecute() � ���������� mode OCI_COMMIT_ON_SUCCESS.

���� �� ������ �������� ���������� � ������� ��������� ���������, �� ���������� ��������������� �������� OCITransRollback(). ����� ���������� ���������� ������������� ��� ����������� (�������� ��� �� ������) ����������� �� �������.

�� ���������� ������ OCI ���������� ������ ��������� ��������� ��������:


    • ��������� ���������������� ������ ������� ������� OCISeccionEnd().
    • ���������� ������������ �� ������� �������� OCIServerDetach().
    • ���������� ��� Handler-�, ������� ��� �� ����������� �������� OCIHandleFree().
    • ���������� Environment Handler (Handler �����).

����� OCI ����� ���������� ������� ������. ���� ��������� ����:


    • OCI_SUCCESS� ������ ���.
    • OCI_SUCCESS_WITH_INFO � �������� ����������, �� ������� OCIErrorGet() ������ �������������� ����������, ������� ����� ���� � ���������������.
    • OCI_NO_DATA� ������� ��������� �������, �� �� ���������� ������� ������.
    • OCI_ERROR� ������������, ����� ��������� ����� ������ ���������� OCI ������. ����� ������ ���������� ������� OCIErrorGet().
    • OCI_INVALID_HANDLE � ������� ��������� OCI ������� � �� �������������� Handler-�� � �������� ���������.
    • OCI_NEED_ DATA� ��� ���������� OCI ������ ��������� ������, ������� ���������� �� ��������� ������������.

��� �� ���������, �������� ���������� OCI ��������� ������ ���������� ������� ����������� �� ������������ �������� OCI �������. ��� ���������� ��������� ������ ���������� ������� OCIErrorGet(), � �������� ��������� ������� �������� Error Handler. �������������� ��������� ������ ������� ��������������� Error Handler ��� ������� ����� ������, ���������� �� ��������� ������.

������ ����� ������, ������������ � ORACLE 7, ORACLE 8 ������������ ����� ����, � � ��������� ������ �� ������ ������ ���� ����������� ����.

����� ���� ������:


    • #define SQLT_NTY 108 /* named object type */
    • #define SQLT_REF 110 /* ref type */
    • #define SQLT_CLOB 112 /* character lob */
    • #define SQLT_BLOB 113 /* binary lob */
    • #define SQLT_BFILE 114 /* binary file lob */
    • #define SQLT_CFILE 115 /* character file lob */
    • #define SQLT_RSET 116 /* result set type */
    • #define SQLT_NCO 122 /*named collection type(varray or nested table)*/
    • #define SQLT_VST 155 /* OCIString type */
    • #define SQLT_ODT 156 /* OCIDate type */

���-����� ���� ������ Realise 8.0 ��� �� ������������, ��������, SQLT_CFILE.

���������� �������, �����������, ������������ BLOB, CLOB, BFILE � ��������� ��� SQLT_NTY. ������ � ����� ������ LOB � ORACLE 8 � ����� ���������� �� ������ � ������ ���� LONG � LONG ROW. ������ � LOB ������ ������� ����� ����������� , ��� ������� �������. �� ����� ���� �������� � ������������� �� ������ ��� ��������� � ����� ���� ��������� ����� �����, �� LOB ������ � ��� ����, �� ������� ������� ������� � ������ ������� ������, ��� :


    • LOB �������� �������� ����� 4000 ���� �������� ��������������� � ��������� ������������.
    • ���� ������ �������� LOB ���� ����� 4000 ����, �� � ��� ����� ���������� ����������� WHERE � SQL.
    • � ������ ���� LOB ������� ����� � ������� �������� � OCI �����������.
    • ����� ���� LOB ����� ���� ������� ������ � ������� � ��� ����� ���� �� ����� �����.
    • ������������� ������ LOB � ������ ���������� �� ������� ��� ������� ������� � ��������� (���������� ������ ������ 4000 ����, � ������ �������������� ������)

��� �� ��������� ��� ������� ���������.

��� � � ORACLE 7 ���������� ���������� � ������� ���� ������. ����� ���� ������ �� �������������� � ������ ���� ��� �������� FETCH � ������ �������� �����������. ��������� ��� ���������.

����� ��������� OCI 8 ���������� � ������������ ���������, � �� ��������.

������� OCI � ���� ��������� � �������� ����� Object Pascal �� Delphi 4 (������ OCI.pas � ���������� � ������)

function OCIInitialize( mode: ub4;

mfreefp: Tmfreefp): sword; cdecl ;

Mode ��������� ����� �������������. �������� ��������:


    • OCI_DEFAULT� ����� �� ���������.
    • OCI_THREADED� ���������, ��� OCI ���������� ����� ����������� � ������������� ��������.
    • OCI_OBJECT� ���������, ��� OCI ���������� ����� ������������ ��������� �����.

Ctxp ��������� �� ������� ������, �� ��������� ������������ � ������� �������������� ������.

Malocfp, ralocfp, mfreefp ��������� �� ������� �������������� ������.

function OCIEnvInit( envp: ppOCIEnv;

usrmempp: Pointer): sword; cdecl ;

Envp ��������� �� Environment Handler.

Mode ����� ���������������� �����. �������� ��������:


    • OCI_DEFAULT� ����� �� ���������. ������������ �������������� ���������� handler-�� ��� ������������� �������� OCI ����������.
    • OCI_NO_MUTEX� ��������� �������������� ���������� handler-��.

xtramem_sz ������ �������������� ������ ��� �����.

usrmempp ��������� �� ��������� ��� ���� ������.

function OCIHandleAlloc( parenth: Pointer;

usrmempp: Pointer): sword; cdecl ;

Parenth Handler �������� (� �������� Environment handler).

Hndlpp ��������� �� ������������� handler.

type_h ��� �������������� handler-�.

xtramem_sz ������ �������������� ������, ������������� ������ � handler ���.

usrmempp ��������� �� ��������� �� ��� ������.

function OCIServerAttach( srvhp: pOCIServer;

mode: ub4): sword; cdecl ;

Srvhp ��������� �� Server handler.

Errhp Error handler

Dblink ��������� �� ������, ����������� ��� �������, � �������� �� ������ ���������������.

dblink_len ����� ���������� ������.

mode ��� ORACLE 8 ������ ���� OCI_DEFAULT.

function OCISessionBegin( svchp: pOCISvcCtx;

mode: ub4): sword; cdecl ;

Svchp �������� �������.

Errhp Error handler.

Usrhp Session handler

Credt ���������� ������ ������� � ���������������� ������. ���� OCI_CRED_RDBMS, �� ������ ������� ������������� ������������, �������� ����� � ������ �������� ������������ � OCISession handler.

Mode ���������� ��������� ����� ������� ���������������� ������. �������� ��������:

function OCIStmtPrepare( stmtp: pOCIStmt;

mode: ub4): sword; cdecl ;

Stmtp Statment handler.

Errhp Error handler.

Stmt ��������� �� ������, ���������� SQL ���������.


stmt_len ����� ����������� ���������.

language ���������� ��������� SQL ��������� (��� ������ ��������)

mode ������ OCI_DEFAULT.

function OCIBindByName( stmtp: pOCIStmt;

mode: ub4): sword; cdecl ;

Stmtp Statment handler.

Bindp ��������� �� Bind Handler, �� ������������� ���������������� � ������������ ��� ����������� Statment Handler � �.

Errhp Error handler.

Placeholder ��� ���������� ����������.

placeh_len ����� ����������� ���������.

valuep ����� ������������ �������� ��� ����� ������� �������� ������� ����������� ��������.

value_sz ������ ���������� ���������� � ������. � ������ ���������� ������� ������������ ������ �������. ����� ��������� ������� �������� � ��������� alenp .

dty ��� ���������� ����������.

indp ��������� �� ���������� ��������� ��� ������ �����������. � ��� �������� �������� �����, ���, ��������, NULL ��������.

alenp ��������� �� ������ � ��������������� ��������� ����������� ����������.

rcodep ��������� �� ������ � ������ �������� ��� ���������� ���������� ��� ������� �������.

maxarr_len ����������� ��������� ���������� ��������� ���������� ���� dty ��� PL/SQL. ���� �������� �� ���������, ���� Bind �������������� � SQL.

curelep ��������� �� �������������� ���������� ��������� ��� PL/SQL ����������. ��� SQL �������� �� ��������������.

mode ��������� ��� �������� OCI_DEFAULT � OCI_DAT_AT_EXEC. ��� ������ �������� ������� ��������� ������������ ������ � �������� ������ ��� ���������� � ���������� ��� � ��������� value_sz.

function OCIStmtExecute( svchp: pOCISvcCtx;

mode: ub4): sword; cdecl ;

Svchp Handler ��������� �������.

Stmtp Satment Handler.

Errhp Error Handler

iters ���������� ��������.

rowoff ��������� ������, � �������� ����� ����� ������� (Bind ��� Fetch)

snap_in �������������� ��������, ����������� �� ���������� SnapShort-� (��������). ������� ��� ��� ����, ����� ������ ������ ��������� ���� �������������� ������ ������� ��������� ��� ������������� ������. ����� ������� (����� ����������� snap_in � snap_out ) �������������� ����� ����� ���������� �����������.

snap_out ���������� SnapShort-� ���������.

mode ����� ��������� ��������:


    • OCI_DEFAULT
    • OCI_DESCRIBE_ONLY
    • OCI_COMMIT_ON_SUCCESS
    • OCI_EXACT_FETCH

�������� ������� ������� ���� �� ����.

function OCIAttrSet( trgthndlp: Pointer;

errhp: pOCIError): sword; cdecl ;

Trgthndlp ��������� �� Handler, ��� �������� ����� ��������.

Trghndltyp ��� Handler-�.

Attributep ��������� �� �������� ��������.

Size ������ �������� ��������.

Attrtype ��� ��������.

Errhp Error Handler.

function OCIAttrGet( trgthndlp: Pointer;

errhp: pOCIError): sword; cdecl ;

Trgthndlp ��������� �� Handler, ��� �������� ����� ���������.

Trghndltyp ��� Handler-�.

Attributep ��������� �� �������� ��������.

Sizep ��������� �� ������ �������� ��������.

Attrtype ��� ��������.

Errhp Error Handler.

function OCIDefineByPos( stmtp: pOCIStmt;

mode: ub4): sword; cdecl ;

Stmtp Statment Handler.

Defnp ��������� �� Define Handler.

Errhp Error handler.

Position ������� ������� (select list item).

Valuep �����, ���� ���������� �������� select list item ��� �������� FETCH. ��� ��������� �� ������ ����� ��������.

value_sz ������ �������� ��� ����������� ������� ��������.

dty ��� ��������.

indp ��������� �� ���������� ��������� ��� ������ ����� ����������.

rlenp ��������� �� ���������� � ������ �������� ��� ������ ���� ����� ��������.

rcodep ��������� �� ���������� ������������� �������� ��� ������ ����� ��������.

mode ����� ���� OCI_DEFAULT ��� OCI_DYNAMIC_FETCH. �� ������ ������ ���������� �������������� ��������� ������ ��� �������� �������� ��� ������ ����������� CALLBACK ������� (�� �� ������ ����). ����� CALLBACK ������� ����������� ��� ������ ������� OCIDefineDynamic.

function OCIStmtFetch( stmtp: pOCIStmt;

mode: ub4): sword; cdecl ;

Stmtp Statment Handler.

Errhp Error Handler.

Nrows ���������� ����� ��� ��������.

Orientation �����������. ��� Realise 8.0 �������� (����) ������ ���� OCI_FETCH_NEXT.

Mode ����������� OCI_DEFAULT, �� ���������.

function OCISessionEnd( svchp: pOCISvcCtx;

mode: ub4): sword; cdecl ;

Svchp Handler ���������� ���������.

Errhp Error Handler.

Usrhp Session handler.

Mode ����������� OCI_DEFAULT, �� ���������.

function OCIServerDetach( srvhp: pOCIServer;

mode: ub4): sword; cdecl ;

Srvhp Handler Server.

Errhp Error Handler.

Mode ����������� OCI_DEFAULT, �� ���������.

function OCIHandleFree(hndlp: Pointer; type_h: ub4): sword; cdecl ;

Hndlp ��������� �� Handler.

type_h ��� Handler ��.

���������� OCI ��� ORACLE 8 � ��������� �������� ����������������.

����� � ORACLE 8 �������� ����� OCI � Bo rland Delphi 4

������ � Delphi 4, ����������� OCI � OCI.PAS

� ����� � ���, ��� CALL ��������� ������������ � �������� ����� �, �� ��� ��� ����������� ���������� ������������ � �������� ������ ������, ���� �� ��������� �� ���. Delphi 4 �� ����������. ���� ���� ���������� ��� #define ����������� �� Header ������, ����������� OCI 8 ��� �: OCI.H, OCIAP.H, OCIDEF.H, ORATYPES.H, OCIDFN.H � �.�. � ���� ���������� ��������� ���� ������� (��� ���������� Relational) �� Object Pascal �� Delphi 4 ��� ORACLE 8 (���������� ORA803.DLL) � ORACLE 7 (���������� OCIW32.DLL).

� ����� ����� OCI.PAS ����� ��� 2000 �����, ������ ����������� ���� ����� ������.

�� ������ �������� ������������ ����� �����������, ���������������� ���� ������ �� �������, � ��� ����� � ������ OCI.PAS.

������ ���������� ����� SQL ���������, ����������� ������������� �� OCI 8.

������ ��������� � ���������� �/OCI/Borland Delphi 4/Test1. ������ ������� ��������� �� ������������ ����� ���������� SQL �����������, ����������� �����.

����� ��������� �������� ��� ��������� �������:

����� ���� ����� � ����������� ��������. �� ��������� ������ �OCI 8 Test� � ��������� ���������� ������ ������������� ������������. ���� ���������� ������ �������, �� ��� ��������������� ����������� � ������� ��������� ��������������� SQL �����������. ����� ������ �� ��������� ��������� �������� ��������� SQL ����������� �, ���� ��� ������, �� ��������� ��� ������������ StringGrig , ������� � ���������� � ���������� ������. ��� ������. �������� ������.

������� �������������� ����� � Environment Handler.

������������� Server Handler � Error Handler.

I := OCIServerAttach( srvhp,

������ � �������.

ShowMessage( ‘Server attach successfull!’ );

i := OCIHandleAlloc( envp,

i := OCIHandleAlloc( envp,

������������� Session Handler � ������ �������� Handler.

��������� ��������� � Handler-�.

i := OCISessionBegin( svchp,

����� ���������������� ������.

������������� Statment Handler-�.

if OCIStmtPrepare( stmthp,

OCI_DEFAULT) = OCI_SUCCESS then

���������� � ����������.

if PrepareStatus then

ShowMessage( ‘Prepare was successfull!’ );

�������� ���������� �������.

for position := 1 to ColumnCount do

OCIParamGet(stmthp, OCI_HTYPE_STMT, errhp, @colhd, position);

�������� ���������� �������.

move(cc^, aCol.ColumnName, aCol.LengthOfColumnName);

� ����������� �� ���� ������� ���� ���������, ��������� �� ���������������.

����������� ������� ��� �������� ����������. � ������ ������ ��� ������ �������������� ����������� ��� ������ ������������� ������ ListBuf.

���������� ���������� ��� StringGrig.

���������� SQL �����������.

i := OCIStmtFetch( stmthp,

�������� ���� ������ �� �������.

for k := 0 to ListBuf.Count — 1 do

TStr � ������ ��� ���� k �� ������� ������� ������.

if pRecResult(ListBuf.Items[k]).indp = -1 then

���� ���������� ��������� ���������, ��� �������� ���� NULL, �� ��������� � ���� ������ ������.

� ��������� ������ ��������� � ���� ������.

� ����� ��������� ������������ Handler-��, �������� ���������������� ������ � ����������.

else ShowMessage( ‘Session was not started!’ );

OCIHandleFree( usrhp, OCI_HTYPE_SESSION);

����� ��������� ��� Delphi 4 ��� ������ ������ � ORACLE 8 ��������.

������� � ����� �����, ��� Delphi 4, ���� �� ������� ������ ������ ��� ��� ��������� ����������� ������� ��� ������ ����� ������. ���� ���������� ���������� ���������, ������ ����������� ��������� �� ����������� ��� ������ ������ � ��������� ORACLE �������. ����� ����� ��������� ��� ���� ���������� � ������������. ��� �� ���� ������ ������������, �� �������� ������ ��������� � ������. � ����������� ��� ��������� ������������, ��, ���������� ��, � �� ������ ������������ �������, ��� �� �������� ���� �������� �����. �� ������ ������ OCI ���������� � ������� ��������� ��������� �������, ���������� ������ �� ����. To8Env � �������� �� ����� ������������� OCI ���������� � �� ����� � ��������. To8Session � ����������� ���������������� ������ ������ Environment. To8Stmt � ����� ����������� ���������, ������������ ��������� ��� ������� TdataSet (������ ��� ��� ����������� � ���� �����������). To8StmtOrd � ���������� ��������� �� To8Stmt , ����������� ���������� ������� SQL ��������� (������� � ��� ������ ����������� � ORACLE 7 �� ����� ������ + LOB — �). ��� �� �� �������� �� ����������� �� ������� ������ � ���������� ��� ������. To8DataSet � ��������� �� ������������ ������ TdataSet . �������� ���������� ������ ��� ���� DBAware ��������� Delphi 4.

��� ��, ��������, ��� ������, ����� ������������ ���������� �� ������ ����������� ���������, �� � ��������� �����������, �.�. ����� � property ������ ���������� ������ ������ �� ������ ��������� � �������� � ����� ��������� ��������.

����������� ��������� ����� ������������ �� ������ ��������� � ��������� VCL ����������, �������� ���� ����� ���������� ���������� ����� ������� (������ ��� � ���� ������). ��������� ������������ ��� � ���, ��� ����� ��������� �������������� �������� (������� ������� ��� �� �������) ��� ����� ��������� � ����� ��������� ����������. ������� ��� �� ������� ����� ���������� ��������� � Design time � Run Time. � �����, � ���� �������, ��� �������������� ������ ��������� ��� VCL ���������� — ���� �� ���� ������� �� ��� ������������ � ������� ���������� ��������. ���, �, ��������, �� ����� �����, ��� ���������������� �������� ���������, ����� ����� ������� ������������� (�� DFM ����� ��� �������� � ������������ �������, �������� �� ����������� � ������������). ��������, �� �� ������ ���������� Active � TRUE ������� To8Session , ���� �� ��� �� ���������� ��� ����� ������� ����������� ��������� � ����� �� �������� To8Env ��� ���� To8Env ��� �� �������. ������� ������ ����� �����, ����� � �������� � �������� ������ VCL � ���������, ��� ��� ��� ������. ��� ��� ������ ��� ������ ��� ����� protect ����������, ������� ��������� ��������� �� DFM ����� �� ������ ��������, � ����� ������������ ����� Loaded , � ������� ���������������� �������� � ��� �������, � ������� ���������� ��� ������� ����������. ����������� ��������������� ����� ������������ ������� ����������� ����������������. ����� ��������������� ��������, ����� ������������ ����������� �� ����� ����������� ������� ���������, � ����� ����� � ������� ��������� � ����� ��������� Del �� �������� ���� �������. ����������� ����, ������� ����� ���� ��� ������ � ������� �������� ���������, ��� � ��� �� ����, ��� ������������� �������� ��������. ������ � ��� ����� ����� �������� ������������� ������ ���� ������� ��������� � ����������. ��� ��������� ������� ���������� �� ��������� ���� ����� ���������, ������� ��������� ��������������� �������.

�� ������, ��� ������ ���������� �������������� ����� � ������ � ��������� ���� ������ ORACLE 8, ���������� ���������� ��� ����� ������ ���������. �� ���������, ���������� ������, ����������. � � ����� ������ ����������, ��� �������� ����� �� �����. � ���� ����� ���������� VCL � ����� ���������� ����� ������� ����. ������ ������, � �� �������� ��� ��������� �� ����� ���� ���� �� �������������� � ��������� ���������� ���������� �� �������� Inprise. ������������, ��� ���� �������� ��� BDE. ������ ������� � � ������ �� ������ ������.

�� �������� � ����������� ������� ������� � ORACLE. �� ������� ������������ �������� � ���� ����� ������. ������ �� ����� ��������� To8Env , ���������� �������� Server � TNS ����� �������, � ������� �� ������ ��������� (��� ������ ������) � ���������� ���������� ����� �������� Active � TRUE . ���� �������� Active �� ���������������, �� ����� ������ ��������� �� ������, ������ ��� ������� �� ��������. ��������� ���������, ������� �� ������ ��������� �� �����, ��� ��������� To8Session . ��� �� �������������� �������� To8Env , ���������� ��� ������������ � ������ � ���� ���������� � �������� ��������� ��������� Active . � ������ To8Env ����� ���� ��������� ���������������� ������ (��������� ��������� To8Session ). ����� ��� ���������� ����-���� ��������� �� �������, �� ����� ��� ��������� ��������� To8StmtOrd . ��� �� ������������ � ����� — ���� ���������������� ������ � �������������� ��� ���� SQL�����������, ��������� ��� ����������. ��� ��, ��� ��� ���������, ���������� ��� � �������� ���������. �� ����� �� ����������� � �������� ��������� ���� �� �������� ������, ���� ��-�� ����, ��� ��� SQL ��������� ���� �� ������. ���� SQL � To8StmtOrd ������ � ��������� �������, ���������� ������� ����� ���� �������� � �����-������ ����������� Control , ������� DBAware . ��� ����� �������� �� ����� To8DataSet , ������� ��� � To8StmtOrd , �������������, �������� �� ����� TdataSource �, ��������, TDBGrid . ������� ��� ���������� ����������� �������. � �� ��� �� �������� �� ����� ������ ������.

� ����� ���������������� ������� �� ������ ������� ��������� ��������� To8StmtOrd , ������ OCI ��� ����� ������� �� �������������� �������� ����� Stmt Handler-��� � ������������� ���������� (� ������ OCIEnvInit �������� mode OCI_DEFAULT).

�� ���� ������ To8StmtOrd �� ������ �������� ������ ���� �������� ������ To8DataSet ��� DBAware Control -��.

��� �������������� ����� � ������������ ������� ������� � ������� ORACLE 8 ����� ����� ������� ������������� ���� ��������� �� �����. �� �����: To8Env, To8Session, To8StmtOrd, To8DataSet. ������ ������� ����� ����������, ����� �� �������� ���������� � ������, �.�. ����-�� �������, ����-�� ����� ������������. � ��������, ��� �� ������ ������� � � ������� �� �������� (������ � ����� �����������). ������ �� ������ ���� ����������� �������� Active ��������� ���������, � ��� ���������� �������� � ������������� ������������. ��� ��� � ������ � ����, ��� ����� ������ �������������� ����� ����������� ���������� ������������������ ������������� ��������� �� ��� (������ ������ ���� �� �����->Creation Order). ��� �������� ��������� ��� ������� ������� ����������� ���������.

����������� � ����������� ��������� ������ ������������� ��������� �����:

� ��� ��� ����� ��������� ����� � �������� ���������� ����������:

Предопределенные константы

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение было подгружено во время выполнения.

DBX_MYSQL ( integer ) DBX_ODBC ( integer ) DBX_PGSQL ( integer ) DBX_MSSQL ( integer ) DBX_FBSQL ( integer ) DBX_OCI8 ( integer ) (доступна с PHP 4.3.0) DBX_SYBASECT ( integer ) DBX_SQLITE ( integer ) (PHP 5) DBX_PERSISTENT ( integer ) DBX_RESULT_INFO ( integer ) DBX_RESULT_INDEX ( integer ) DBX_RESULT_ASSOC ( integer ) DBX_RESULT_UNBUFFERED ( integer ) (PHP 5) DBX_COLNAMES_UNCHANGED ( integer ) (доступна с PHP 4.3.0) DBX_COLNAMES_UPPERCASE ( integer ) (доступна с PHP 4.3.0) DBX_COLNAMES_LOWERCASE ( integer ) (доступна с PHP 4.3.0) DBX_CMP_NATIVE ( integer ) DBX_CMP_TEXT ( integer ) DBX_CMP_NUMBER ( integer ) DBX_CMP_ASC ( integer ) DBX_CMP_DESC ( integer )

����������� ����������

���� �/C++ �������������� ���������� ��������������. �� ����������� __cplusplus � _Windows, ������ �� ��� � ����������, � ������������� ����� ��������� ������������� (__). ��� ������� ����� �������� ������ �����������. ���������� �� ����� ��������.

������ __BCPLUSPLUS__ ������ ���������� ���������� ��� ����� �++. ���� ������ ���������� ����� �++, �� ������ ��������� ��� ����������������� ��������� 0�0300.

������ __BORLANDC__ ��������� ��� ����������������� ��������� 0�0400.

������ __CDECL__ �������� � ���, ��� ���� -p �� ����������� (������p��� ������ � ���������� ���� Entry/Exit Code Generation). �� ��������������� ������ ������������� ��������� 1, ���� -p �� �������������; � ��������� ������ �� �� ���������.

������ __cplusplus ��������� ��� 1, ���� ������������ ���� �++, � ��������� ������ �� �� ���������. �� ��������� �������� ������, ������� � ��������� ������� ����� ��������������� � ����� �, � � ��������� ������� � � ����� �++. ������������� �������� �������� ���������� ��������� ���������, ����� ����� ��������� ��� ������ � � �++ ����� �������� � ����������.

������ __DATE__ ���� ���� ������ ��������� �������������� �������� ��������� ����� (� ���� ���������� ��������). ������ ��������� __DATE__ � ������ ���� ���� ���� � �� �� ��������, ���������� �� ����, ������� ������� ������������ ��������� ����� ��������������. ���� ����� ������:

��� mmm � ��� ����� (Jan, Feb � �.�.); dd � ����� ������ (�� 1 �� 31, ������ ���� ��� ����� ������ 10, �� ������ ������ d ����� �������); yyyy � ��� (2001, 2010 � �.�.).

������ __DLL__ ��������� ��� 1, ���� ������������� ������ � ������ -WD ��������� ������ ��� ������������ ���������� ������ Windows DLL All Functions Exportable (O|C|C|Entry/Exit Code) ��������� ���� ��� Windows DLL; � ������ ������� �� �� ���������.

������ __FILE__���� ��� �������� ��������������� �������������� ��������� ����� (� ���� ���������� ��������).

������ __LINE__ ���� ���������� ������������ �������������� � ������� ������� ����� �������� ��������� ����� (��� ���������� ���������). ������ ������ ������ ��������� ����� ������������ � ������� 1, ���� �� ��� ����� �������� ��������� #line..

������ __MSDOS__ ���� ������������� ��������� 1 ��� ���� ������� ����������.

������ __OVERLAY__ ���������� ��� ��������� ������������ Borland C � �++. �� ������������� ������ 1, ���� ������ ������������� � ������ -Y (�������� ��������� ���������� ��������). ���� ���������� ��������� �� ��������������, �� ������ ������ �� ���������.

������ __PASCAL__ �������� � ���, ��� ��� ����������� ���� -p ��� ��� ����������� ����� ���������� Pascal (O|C|C|Exit/Entry). ������ ���������� ������ ������������� ��������� 1, ���� ���� -p �������������; � ��������� ������ �� �� ���������.

������ __STDC__ ��������� ������ ��������� 1, ���� ���������� ����������� ��� ������������� ����� ������������� � ANSI (-A ��� ������p��� ������ ANSI Source Option); � ��������� ������ ������ �� ���������.

������ __TEMPLATES__ ���������� ��� ��������� ������������ Borland C � �++. �� ��������� ��� 1 ��� �++ ������ (�������� � �������, ����� Borland C++ ������������ �������); � ������ ������� �� �� ���������.

������ __TIME__ ���� ����� ������ ��������� �������������� �������� ��������� ����� (� ���� ���������� ��������). ��� � � ������ ������� __DATE__, ������ ��������� __TIME__ ����� ��������� ���� � �� �� ��������, ���������� �� ����, ������� ������� ������������ ��������� �����. �� ����� ������:

��� hh ����� (�� 00 �� 23); mm ������� (�� 00 �� 59); ss �������� (�� 00 �� 59).

������ __TURBOC__ ���������� ��� ��������� ������������ Borland C � �++. �� ��������� ��� ����������������� ���������, ������ 0�0400.

������?
������ � �������������, ����� ����� ������
8 (800) 100-77-13 � 7.00 �� 22.00

������ ������ ��������� �������� 1� 8.2 (8.3)

������������ ��. ��������� 1� 8.2.19.106 ���� ����������� ���������� � 1.1.34.1 �� 1.1.49.1. ����� ����� ��� ���������� ������������ ���������� ��������� ������:
������ ��� ���������� ����������� � ����������
�� �������:
<�����������.�������������������������������.������(84)>: ������ ��� ������ ������ ��������� (��������)

�� �������:
� ������ ���������� ��� ����������� ������!

������ ��� � ��������� �������������������������������.��������������������������()
������� ���������[��������������].��������(���);

�������������� � ��� ��� ���������, ����������� ���������

������ � ����� ����������� ������ ���, ������ � ������������. ��� �������, ������ ��������� ������������, ������� ������ ������-���������/�������� ������ �������� �����������

Codeigniter and oracle undefined constant: OCI_COMMIT_ON_SUCCESS

I develloping a web-based application with codeigniter and when I try to connect to my oracle entreprise 9g database the framework send me this error:

I tried different method to connect (classic, oracle specific). There is my config/database.php file.

I think it’s not a connection error, can you help me?

1 Answer 1

OCI_COMMIT_ON_SUCCESS is a constant declared in the Oracle PHP extension. Are you sure you have that installed correctly? Is it enabled in php.ini? Can you confirm that you can connect to the database manually with oci_connect ?

If you don’t have the extension, then you’ll need to install it. There is a list of steps I generally take to debug the installation here.

I’m not sure what the value of OCI_COMMIT_ON_SUCCESS is, but you might be able to fake it with your own define, if it comes to that.

Илон Маск рекомендует:  Обpатная польская нотация
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL