oracle - 在存储过程中执行创建表会引发错误
问题描述
我想在我的存储过程中运行它,但它给了我错误:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE "temp1"';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -942 THEN
create table temp1(id number);
ELSE
RAISE;
END IF;
END;
我也尝试过放置 BEGIN END 块create table temp1(id number)
,但错误保持不变。
错误:
PLS-00103:在预期以下情况之一时遇到符号“CREATE”:
(开始 case 声明退出 goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge 06550. 00000 - “line %s, column %s :\n%s" *原因:通常是 PL/SQL 编译错误。*措施:
解决方案
CREATE TABLE 也是 DDL 就像 DROP 所以也必须作为动态 SQL 运行:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE "temp1"';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -942 THEN
EXECUTE IMMEDIATE 'create table temp1(id number)';
ELSE
RAISE;
END IF;
END;
推荐阅读
- xml - 如何确定 xml 在代号中的格式是否正确?
- sql - 是否与空值定义的行为进行比较?
- java - HTML 音频标签在 localhost 中无法使用 apache tomcat
- postgresql - 错误:YAML 解析错误 - 将 YAML 转换为 JSON 时出错:yaml: control characters are not allowed
- java - 如何通过热敏打印机在卷筒上正确对齐打印多个标签
- python - 使用 multiprocessing.pool() 遍历列表
- windows - 是否可以在 windows iis 上运行 Nest.js 应用程序?
- c++ - 如何使用 C++17 的文件系统检查路径是否引用 Windows 中的卷?
- python - Python:加载txt文件并形成数据框
- node.js - 实体管理器和存储库 typeorm 之间的区别