我有使用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
您可以将所有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;