Mar*_*iya 5 oracle plsql check-constraints ora-00904
我得到这个错误:ORA-00904:"M":无效的标识符 - >如果我把('M','F')//单引号我收到此错误消息:PLS-00103:遇到符号"M"期待以下之一:*&= - +; </> at in是mod的余数不是rem返回返回<>或!=或〜=> = <= <>和/或喜欢LIKE2_ LIKE4_ LIKEC_之间使用|| multiset批量成员SUBMULTISET_ - >如果我删除约束,表将正常创建
这是我的代码
EXECUTE IMMEDIATE 'CREATE TABLE dependents
( Id NUMBER(6)
, FirstName VARCHAR2(20)
, LastName VARCHAR2(25)
CONSTRAINT dep_last_name_nn NOT NULL
, Birthdate Date
, Relation VARCHAR2(20)
, Gender char(1)
, RelativeId Number(6)
, CONSTRAINT pk_dependent primary key (Id)
, CONSTRAINT ck_gender CHECK(Gender in("F","M"))
)';
Run Code Online (Sandbox Code Playgroud)
假设您使用的是相对较新版本的Oracle,我将使用新的字符串转义语法
EXECUTE IMMEDIATE q'[CREATE TABLE dependents
( Id NUMBER(6)
, FirstName VARCHAR2(20)
, LastName VARCHAR2(25)
CONSTRAINT dep_last_name_nn NOT NULL
, Birthdate Date
, Relation VARCHAR2(20)
, Gender char(1)
, RelativeId Number(6)
, CONSTRAINT pk_dependent primary key (Id)
, CONSTRAINT ck_gender CHECK(Gender in('F','M'))
)]';
Run Code Online (Sandbox Code Playgroud)
如果您不想使用新语法,则需要连续两个单引号,而不是双引号
EXECUTE IMMEDIATE 'CREATE TABLE dependents
( Id NUMBER(6)
, FirstName VARCHAR2(20)
, LastName VARCHAR2(25)
CONSTRAINT dep_last_name_nn NOT NULL
, Birthdate Date
, Relation VARCHAR2(20)
, Gender char(1)
, RelativeId Number(6)
, CONSTRAINT pk_dependent primary key (Id)
, CONSTRAINT ck_gender CHECK(Gender in(''F'',''M''))
)';
Run Code Online (Sandbox Code Playgroud)
但是,我会提醒说,动态创建对象通常是一个坏主意 - 通常有更好的方法来完成这类事情.
oracle引擎需要'F','M'.由于它嵌入在一个字符串中,你必须使用类似pascal的转义作为引号,试试这个:
EXECUTE IMMEDIATE 'CREATE TABLE dependents
( Id NUMBER(6)
, FirstName VARCHAR2(20)
, LastName VARCHAR2(25)
CONSTRAINT dep_last_name_nn NOT NULL
, Birthdate Date
, Relation VARCHAR2(20)
, Gender char(1)
, RelativeId Number(6)
, CONSTRAINT pk_dependent primary key (Id)
, CONSTRAINT ck_gender CHECK(Gender in(''F'',''M''))
)';
Run Code Online (Sandbox Code Playgroud)
它会按你的意愿运行.
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |