php로 cubrid 프로시저 사용하기 2 - cubrid_prepare 이용 -

by 박진호 posted Oct 30, 2007
제가 저번에 php에서 프로시저 사용하는 것을 올렸는데요..
7.3 버전이 나오고 나서는 cubrid_prepare 함수가 추가되어서 저번과 같이 따로 변수를 선언하는 작업을 할 필요가 없어졌습니다.

그래서 다시 간단하게 나마 사용 방법을 올립니다.


[자바 소스 ,   Hello.java]

public class Hello {
        public static String sayHello(int i) {
                return "count : " + i;
        }
}

// javac Hello.java
// loadjava demodb Hello.class

[프로시저 등록 ]

1. hello_test , 일반 프로시저

   create function hello_test (i int) return string
   as language JAVA
   name ''''Hello.sayHello(int) RETURN java.lang.String'''';


[php 예제]

$con =  cubrid_connect(''''localhost'''',''''33000'''',''''demodb'''',''''dba'''','''''''');

// 예제 1. select

$sql = "select * from db_root where 1 < ? ";
$stmt = cubrid_prepare($con, $sql);

$search = 10;

cubrid_bind($stmt, 1, $search);

$result = cubrid_execute($stmt);

while($arr = cubrid_fetch($stmt)) {
        var_dump($arr);
}


// 예제 2. 프로시저 및 함수
$sql = "call hello_test(?)";
$stmt = cubrid_prepare($con, $sql);

$search = 10;

cubrid_bind($stmt, 1, $search);

$result = cubrid_execute($stmt);

while($arr = cubrid_fetch($stmt)) {
        var_dump($arr);
}


cubrid_disconnect($con);


추가로 설명을 드리면

일반적으로 select 에 대해서

$result = cubrid_execute($con, $sql);

cubrid_fetch($result);

execute의 결과인 리소를 사용하지만


cubrid_prepare를 쓰시게 되면

$req = cubrid_prepare($con, $sql);

cubrid_execute($con, $req);
cubrid_fetch($req);

와 같이 prepare로 저장해놨던 리소스를 그대로 사용합니다.

참고 하시면 좋을 듯 합니다.

* 아직 out 변수는 어떻게 사용하는지 모르겠네요.. 따로 방법이 있는지 궁금합니다.