PHP 调用Oracle存储过程

PHP代码如下:

public function index()
        {
            $num = 3;
            @$sql = "call TTTT('$num')";
            $this->db04->query($sql);                    
        }

        public function indexxx()
        {
           header("Content-type: text/html; charset=utf-8");
           $conn = oci_connect('user','password',"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=xxxxxxxxxx)(PORT = 1521))(CONNECT_DATA =(SID=xxxxx)))");
           if($conn){
                   echo '连接上';
           }else{
                   echo '未连接';
           }
            $sql = 'BEGIN TTTT(:num); END;';
            $stmt = oci_parse($conn,$sql);    
            oci_bind_by_name($stmt,':num',$num,32); //绑定参数       
            $num = '2';
            oci_execute($stmt);            
        }

Oracle procedure代码如下:

create or replace PROCEDURE TTTT(num number)
AS
BEGIN
    DELETE FROM TEST T
    WHERE T.THEDATE=TO_CHAR(SYSDATE-NUM,'YYYY-MM-DD');
    
    INSERT INTO  TEST(THEDATE,ACCOUNT_CNT,DEVICE_CNT,CHANNELID,GAMEID,LOADTIME)
    SELECT TO_CHAR(SYSDATE-NUM,'YYYY-MM-DD') AS REGDATE,
           COUNT(SN.ACCOUNTID),
           COUNT(DISTINCT SN.DEVICEID),
           SN.CHANNELID,
           SN.GAMEID,
           SYSDATE
    FROM SDK_NEWUSER SN
    WHERE SN.NEWDATE=TO_CHAR(SYSDATE-NUM,'YYYY-MM-DD')
    GROUP BY SN.CHANNELID,
             SN.GAMEID;
    COMMIT;     
END TTTT;
原文地址:https://www.cnblogs.com/feiwu123/p/5231534.html