db2_set_option

(PECL ibm_db2 >= 1.0.0)

db2_set_option — 연결 또는 명령문 자원에 대한 옵션 설정


설명

db2_set_option(resource $resource, array $options, int $type): bool

명령문 리소스 또는 연결 리소스에 대한 옵션을 설정합니다. 결과 집합 리소스에 대한 옵션을 설정할 수 없습니다.


매개변수

resource
db2_prepare()에서 리턴된 유효한 명령문 자원 또는 db2_connect() 또는 db2_pconnect()에서 리턴된 유효한 연결 자원.
options
유효한 명령문 또는 연결 옵션을 포함하는 연관 배열입니다. 이 매개변수는 자동 커밋 값, 커서 유형(스크롤 가능 또는 앞으로)을 변경하고 결과 세트에 나타날 열 이름(하위, 상위 또는 자연)의 대소문자를 지정하는 데 사용할 수 있습니다.
autocommit
DB2_AUTOCOMMIT_ON을 전달하면 지정된 연결 리소스에 대한 자동 커밋이 켜집니다.

DB2_AUTOCOMMIT_OFF를 전달하면 지정된 연결 리소스에 대한 자동 커밋이 해제됩니다.

cursor
DB2_FORWARD_ONLY를 전달하면 명령문 자원에 대해 정방향 전용 커서가 지정됩니다. 이것은 기본 커서 유형이며 모든 데이터베이스 서버에서 지원됩니다.

DB2_SCROLLABLE을 전달하면 명령문 자원에 대해 스크롤 가능한 커서가 지정됩니다. 스크롤 가능한 커서를 사용하면 결과 집합 행에 비순차적 순서로 액세스할 수 있지만 IBM DB2 Universal Database 데이터베이스에서만 지원됩니다.

binmode
DB2_BINARY를 전달하면 이진 데이터가 있는 그대로 반환됩니다. 이것은 기본 모드입니다. 이는 php.ini에서 ibm_db2.binmode=1을 설정하는 것과 동일합니다.

DB2_CONVERT를 전달하면 2진 데이터가 16진 인코딩으로 변환되고 그대로 리턴됩니다. 이는 php.ini에서 ibm_db2.binmode=2를 설정하는 것과 동일합니다.

DB2_PASSTHRU를 전달하면 2진 데이터가 null로 변환됨을 지정합니다. 이는 php.ini에서 ibm_db2.binmode=3을 설정하는 것과 동일합니다.

db2_attr_case
DB2_CASE_LOWER를 전달하면 결과 세트의 열 이름이 소문자로 리턴되도록 지정됩니다.

DB2_CASE_UPPER를 전달하면 결과 집합의 열 이름이 대문자로 반환되도록 지정합니다.

DB2_CASE_NATURAL을 전달하면 결과 세트의 열 이름이 자연 대소문자로 리턴되도록 지정합니다.

deferred_prepare
DB2_DEFERRED_PREPARE_ON을 전달하면 지정된 명령문 자원에 대해 지연된 준비가 켜집니다.

DB2_DEFERRED_PREPARE_OFF를 전달하면 지정된 명령문 자원에 대한 지연된 준비가 해제됩니다.

다음 새 i5/OS 옵션은 ibm_db2 버전 1.5.1 이상에서 사용할 수 있습니다. 이 옵션은 기본적으로 i5 시스템에서 PHP 및 ibm_db2를 실행할 때만 적용됩니다.

i5_fetch_only
DB2_I5_FETCH_ON - 커서는 읽기 전용이며 위치 지정 업데이트 또는 삭제에 사용할 수 없습니다. SQL_ATTR_FOR_FETCH_ONLY 환경이 SQL_FALSE로 설정되지 않은 경우 기본값입니다.

DB2_I5_FETCH_OFF - 위치 지정 업데이트 및 삭제에 커서를 사용할 수 있습니다.

다음 새 옵션은 ibm_db2 버전 1.8.0 이상에서 사용할 수 있습니다.

rowcount
DB2_ROWCOUNT_PREFETCH_ON - 클라이언트는 가져오기 전에 전체 행 수를 요청할 수 있습니다. 즉, db2_num_rows()ROLLFORWARD_ONLY 커서가 사용되는 경우에도 선택한 행 수를 리턴합니다.

DB2_ROWCOUNT_PREFETCH_OFF - 클라이언트가 가져오기 전에 전체 행 수를 요청할 수 없습니다.

다음 새 옵션은 ibm_db2 버전 1.7.0 이상에서 사용할 수 있습니다.

trusted_user
사용자를 신뢰할 수 있는 사용자로 전환하려면 신뢰할 수 있는 사용자의 사용자 ID(문자열)를 이 키 값으로 전달합니다. 이 옵션은 연결 리소스에만 설정할 수 있습니다. 이 옵션을 사용하려면 연결 리소스에서 신뢰할 수 있는 컨텍스트를 활성화해야 합니다.
trusted_password
Trusted_user 키로 지정된 사용자에 해당하는 암호(문자열)입니다.

다음 새 옵션은 ibm_db2 버전 1.6.0 이상에서 사용할 수 있습니다. 이러한 옵션은 db2_get_option()을 사용하여 실행하는 동안 액세스할 수 있는 유용한 추적 정보를 제공합니다.

메모:

각 옵션의 값을 설정할 때 일부 서버는 제공된 전체 길이를 처리하지 못하고 값이 잘릴 수 있습니다.

각 옵션에 지정된 데이터가 호스트 시스템으로 전송될 때 올바르게 변환되도록 하려면 문자 A~Z, 0~9, 밑줄(_) 또는 마침표(.)만 사용하십시오.

userid
SQL_ATTR_INFO_USERID - DB2 Connect를 사용할 때 호스트 데이터베이스 서버로 보낸 클라이언트 사용자 ID를 식별하는 데 사용되는 널 종료 문자열에 대한 포인터.

메모: z/OS 및 OS/390용 DB2 서버는 최대 16자 길이를 지원합니다. 이 사용자 ID는 인증 사용자 ID와 혼동되어서는 안 되며 식별 목적으로만 사용되며 권한 부여에는 사용되지 않습니다.

acctstr
SQL_ATTR_INFO_ACCTSTR - DB2 Connect를 사용할 때 호스트 데이터베이스 서버에 전송된 클라이언트 계정 문자열을 식별하는 데 사용되는 null로 끝나는 문자열에 대한 포인터입니다.

메모: z/OS 및 OS/390용 DB2 서버는 최대 200자 길이를 지원합니다.

applname
SQL_ATTR_INFO_APPLNAME - DB2 Connect를 사용할 때 호스트 데이터베이스 서버에 전송된 클라이언트 응용 프로그램 이름을 식별하는 데 사용되는 null로 끝나는 문자열에 대한 포인터입니다.

메모: z/OS 및 OS/390용 DB2 서버는 최대 32자 길이를 지원합니다.

wrkstnname
SQL_ATTR_INFO_WRKSTNNAME - DB2 Connect를 사용할 때 호스트 데이터베이스 서버에 보낸 클라이언트 워크스테이션 이름을 식별하는 데 사용되는 널 종료 문자열에 대한 포인터.

메모: z/OS 및 OS/390용 DB2 서버는 최대 18자 길이를 지원합니다.

type
함수에 전달된 리소스 유형을 지정하는 정수 값입니다. 리소스 유형과 이 값은 일치해야 합니다.

값으로 1을 전달하면 연결 리소스가 함수에 전달되었음을 지정합니다.

값으로 1이 아닌 정수를 전달하면 명령문 자원이 함수에 전달되었음을 지정합니다.

다음 표에서는 사용 가능한 리소스 유형과 호환되는 옵션을 지정합니다.

자원-매개변수 매트릭스

Key Value Resource Type
  Connection Statement Result Set
autocommit DB2_AUTOCOMMIT_ON X - -
autocommit DB2_AUTOCOMMIT_OFF X - -
cursor DB2_SCROLLABLE - X -
cursor DB2_FORWARD_ONLY - X -
binmode DB2_BINARY X X -
binmode DB2_CONVERT X X -
binmode DB2_PASSTHRU X X -
db2_attr_case DB2_CASE_LOWER X X -
db2_attr_case DB2_CASE_UPPER X X -
db2_attr_case DB2_CASE_NATURAL X X -
deferred_prepare DB2_DEFERRED_PREPARE_ON - X -
deferred_prepare DB2_DEFERRED_PREPARE_OFF - X -
i5_fetch_only DB2_I5_FETCH_ON - X -
i5_fetch_only DB2_I5_FETCH_OFF - X -
rowcount DB2_ROWCOUNT_PREFETCH_ON - X -
rowcount DB2_ROWCOUNT_PREFETCH_OFF - X -
trusted_user <USER NAME> (String) X - -
trusted_password <PASSWORD> (String) X - -
userid SQL_ATTR_INFO_USERID X X -
acctstr SQL_ATTR_INFO_ACCTSTR X X -
applname SQL_ATTR_INFO_APPLNAME X X -
wrkstnname SQL_ATTR_INFO_WRKSTNNAME X X -

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


Examples

예제 #1 연결 리소스로 하나의 매개변수 설정

다음 예에서는 AUTOCOMMIT를 끈 상태에서 생성된 연결을 db2_autocommit() 함수로 테스트합니다.

                  
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_ON);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>
                  
                

위의 예는 다음을 출력합니다.

Options Set Successfully
                

예제 #2 연결 리소스로 여러 매개변수 설정

                 
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>
                 
               

위의 예는 다음을 출력합니다.

Options Set Successfully
               

예제 #3 유효하지 않은 키로 여러 매개변수 설정하기

                
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
             'MY_INVALID_KEY' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>
                 
               

위의 예는 다음을 출력합니다.

Could Not Set Options
               

예제 #4 잘못된 값으로 여러 매개변수 설정하기

                
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => 'INVALID_VALUE',
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>
                 
               

위의 예는 다음을 출력합니다.

Could Not Set Options
               

예제 #5 연결 리소스와 잘못된 유형으로 여러 매개변수 설정

                
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and the wrong type value */
$result = db2_set_option($conn, $options, 2);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>
                 
               

위의 예는 다음을 출력합니다.

Could Not Set Options
               

예제 #6 잘못된 리소스로 여러 매개변수 설정하기

                
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE');

/* Call the function using the wrong resource, and the correct options array, and type values */
$result = db2_set_option($stmt, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>
                 
               

위의 예는 다음을 출력합니다.

Could Not Set Options
               

예제 #7 모두 합치기

                
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('db2_attr_case' => DB2_CASE_LOWER,
                        'cursor' => DB2_SCROLLABLE);

$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE WHERE EMPNO = ? OR EMPNO = ?');

/* Call the function using the correct resource, options array, and type values */
$option_result = db2_set_option($stmt, $options, 2);
$result = db2_execute($stmt, array('000130', '000140'));

/* Get Row 2 before Row 1 since Scrollable Cursor */
print_r(db2_fetch_assoc($stmt, 2));
print '<br /><br />';
print_r(db2_fetch_assoc($stmt, 1));

?>
                 
               

위의 예는 다음을 출력합니다.

Array
(
    [empno] => 000140
    [firstnme] => HEATHER
    [midinit] => A
    [lastname] => NICHOLLS
    [workdept] => C01
    [phoneno] => 1793
    [hiredate] => 1976-12-15
    [job] => ANALYST
    [edlevel] => 18
    [sex] => F
    [birthdate] => 1946-01-19
    [salary] => 28420.00
    [bonus] => 600.00
    [comm] => 2274.00
)

Array
(
    [empno] => 000130
    [firstnme] => DELORES
    [midinit] => M
    [lastname] => QUINTANA
    [workdept] => C01
    [phoneno] => 4578
    [hiredate] => 1971-07-28
    [job] => ANALYST
    [edlevel] => 16
    [sex] => F
    [birthdate] => 1925-09-15
    [salary] => 23800.00
    [bonus] => 500.00
    [comm] => 1904.00
)
               

예제 #8 i5/OS 커서는 읽기 전용입니다.

                
<?php
  $conn = db2_connect("", "", "", array("i5_lib"=>"nobody"));
  $stmt = db2_prepare($conn, 'select * from names where first = ?');
  $name = "first2";
  db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
  $options = array("i5_fetch_only"=>DB2_I5_FETCH_ON);
  db2_set_option($stmt,$options,0);
  if (db2_execute($stmt)) {
    while ($row = db2_fetch_array($stmt)) {
      echo "{$row[0]} {$row[1]}";
    }
  }
?>
                 
               

위의 예는 다음을 출력합니다.

first2 last2
               

기타

  • db2_connect() - 데이터베이스에 대한 연결을 반환합니다.
  • db2_pconnect() - 데이터베이스에 대한 지속적인 연결을 반환합니다.
  • db2_exec() - SQL 문을 직접 실행
  • db2_prepare() - 실행할 SQL 문을 준비합니다.
  • db2_cursor_type() - 명령문 리소스에서 사용하는 커서 유형을 반환합니다.