如何在PHP中删除和创建Oracle数据库表

问题描述 投票:1回答:1

我有使用13个表创建所有数据库的代码。

我想增加删除这些表的可能性(已经有了这个表)并将它们添加为新的和空的。

我的代码:

include 'connection.php';

$c = oci_connect($username, $password, $database);
if (!$c) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

$createDb = "CREATE TABLE adres (
    adresid        INTEGER NOT NULL,
    miasto         VARCHAR2(50 CHAR),
    ulica          VARCHAR2(50 CHAR),
    kod_pocztowy   CHAR(11 CHAR),
    nr_mieszkania  CHAR(5 CHAR),
    nr_domu        CHAR(5 CHAR)
);";

$ex = oci_parse($c,$createDb);
oci_execute($ex);

作为回应,我得到警告:

Warning: oci_execute(): ORA-00922: missing or invalid option
php oracle oci
1个回答
0
投票

您可以将所有create语句放入表temp1中,可以使用oci_parse和oci_execute创建和插入该表然后,您可以使用oci_parse和oci_execute使用PLSQL块运行代码。另外,如有需要,请删除分号。

Step1

        CREATE TABLE temp1
      (
         id       NUMBER,
         sql_text CLOB
      );

Step2

    INSERT INTO temp1
    VALUES     (1,
                'create table t2 (t number);create table t3 (t1 number);');

Step3

    BEGIN
        FOR rec IN (SELECT Regexp_substr(sql_text, '[^;]+', 1, LEVEL) sql_text
                    FROM   temp1
                    CONNECT BY LEVEL <= Regexp_count(sql_text, '[^;]+')) LOOP
            BEGIN
                EXECUTE IMMEDIATE rec.sql_text;
            EXCEPTION
                WHEN OTHERS THEN
                  dbms_output.Put_line(SQLERRM);
            END;
        END LOOP;
    END; 
© www.soinside.com 2019 - 2024. All rights reserved.