是否可以做类似的事情select 1 as foo, foo+1 from dual
这返回ERROR at line 1: ORA-00904: "FOO": invalid identifier
我有一个组成列的冗长计算,我希望能够轻松地使用该值在差异列中进行计算
是否可以使用十六进制case语句执行开关?
例如:
switch (integer) {
case: 1
function();
break;
case: F:
function();
break;
}
Run Code Online (Sandbox Code Playgroud)
g ++抱怨说:
example.cpp: In function ‘int main()’:
example.cpp:148:18: error: ‘F’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
我假设编译器试图将其F视为变量.我知道,而不是F我可以使用值,15但十六进制会更方便.
其他控制语句的解决方案也不错.
我的问题是下面详述的触发器似乎正确执行,除了更新语句 UPDATE my_dblist
SET passive_servername = v_newpassive WHERE server = :NEW.server AND dbname = :NEW.dbname;似乎没有发生的事实.旧记录将被删除并正确插入历史记录,但新记录没有在passive_servername下列出旧的活动服务器.我有一种感觉,这可能与它自治有关吗?
create or replace
TRIGGER cluster_check
AFTER INSERT ON my_dblist
FOR EACH ROW
DECLARE
pragma autonomous_transaction;
v_duplicates NUMBER;
v_newpassive varchar2(30);
BEGIN
SELECT count(*) INTO v_duplicates FROM my_dblist WHERE passive_servername = :new.server and dbname = :new.dbname order by 1;
IF v_duplicates > 0
THEN
SELECT server INTO v_newpassive FROM my_dblist WHERE passive_servername = :NEW.server AND dbname = :NEW.dbname ORDER BY 1;
UPDATE my_dblist
SET passive_servername = …Run Code Online (Sandbox Code Playgroud)