类似于硬编码文字是否可以接受?,但我在这里特别想到"魔法字符串".
在一个大型项目中,我们有一个配置选项表,如下所示:
Name Value
---- -----
FOO_ENABLED Y
BAR_ENABLED N
...
Run Code Online (Sandbox Code Playgroud)
(数以百计).
通常的做法是调用泛型函数来测试这样的选项:
if (config_options.value('FOO_ENABLED') == 'Y') ...
Run Code Online (Sandbox Code Playgroud)
(当然,可能需要在系统代码的许多地方检查相同的选项.)
添加新选项时,我正在考虑添加一个隐藏"魔术字符串"的函数,如下所示:
if (config_options.foo_enabled()) ...
Run Code Online (Sandbox Code Playgroud)
然而,同事们认为我已经过火了并反对这样做,更喜欢硬编码,因为:
麻烦的是,我可以看到他们的观点!实际上,我们永远不会出于任何原因重命名选项,因此我能为我的函数考虑的唯一优势是编译器会捕获像fo_enabled()这样的拼写错误,但不能捕获'FO_ENABLED'.
你怎么看?我错过了其他任何优点/缺点吗?
我在数据库中遇到过这样的查询:
SELECT col_a
FROM my_table
WHERE
nvl(col_b, 0) in
nvl(nvl(:arg, col_b), 0)
Run Code Online (Sandbox Code Playgroud)
这将从我的表返回col_a,其中:
这似乎是一种非常复杂的方式来返回与输入参数匹配的一个或所有记录,或者只是根据输入参数的值选择整个表.
有没有更简单的方法来达到同样的效果?
另外,我注意到NVLOracle是特定的,在这个实例中使用它有什么好处COALESCE吗?
我需要在oracle中将字符串转换为Date.
字符串的格式如下:
'08/11/1999 05:45:00 p.m.'
Run Code Online (Sandbox Code Playgroud)
但最后一个位置可以改变下午或者我试图做一些像:
to_date('08/11/1999 05:45:00 p.m.', 'dd/mm/yyyy hh:mi:ss a.m./p.m.')
to_date('08/11/1999 05:45:00 p.m.', 'dd/mm/yyyy hh:mi:ss am/pm')
Run Code Online (Sandbox Code Playgroud)
但是给我一个错误ORA-01855:AM/AM或PM/PM要求......任何想法?
我正在使用以下方法检索我的网格数据:
var ig$ = apex.region("myGrid1").widget(),
view = ig$.interactiveGrid("getCurrentView");
Run Code Online (Sandbox Code Playgroud)
现在我想检查基于 2 列的特定记录:id1以及id2whereid1 = 1和id2 = 7
我怎么能用javascript做到这一点?
我是 pl/sql 新手!我正在尝试使用简单的冒泡排序算法对记录表进行排序。问题是什么?
在哪里可以找到有关使用记录表的更多信息?
DECLARE
text VARCHAR2(50);
TYPE TIP_VECTOR
IS
TABLE OF INT INDEX BY BINARY_INTEGER;
TYPE contorRecord
IS
record
(
codASCII VARCHAR2(3),
contor SMALLINT);
TYpe tip_vector2
IS
TABLE OF contorRecord;
VECTOR TIP_VECTOR;
VECTOR2 TIP_VECTOR2 := TIP_VECTOR2();
aux tip_vector2 := tip_vector2();
v_char VARCHAR2(3);
FLAG BOOLEAN := TRUE;
t smallint;
n SMALLINT := 1;
ind SMALLINT := 0;
begin
AUX.EXTEND(1);
WHILE(FLAG)
LOOP
FLAG := FALSE;
-- here is the problem; what i'm doing wrong?
FOR I IN 1..(vector2.count-1) LOOP
-- here …Run Code Online (Sandbox Code Playgroud) 给定(忽略缺少主键,外键等 - 这不是表设计,只是一个例子):
Order:
----------
ID NUMBER;
VENDOR NUMBER;
PART NUMBER;
Parts:
------------
ID NUMBER;
VENDOR NUMBER;
DESCRIPTION VARCHAR2(1000 CHAR);
cursor c1 is select * from order o left join parts p on o.part = p.id;
c_row c1%rowtype;
Run Code Online (Sandbox Code Playgroud)
如何区分将在联接中的两个VENDOR列?
我不认为我可以做c_row.value,因为那会是模棱两可的,我不认为像c_row.p.vendor这样的东西有效.
如何引用两个值列的特定实例?
OR子句是否会抑制索引,如果是,有人可以提供适当的示例吗?
create table test2(field1 varchar2(100),field2 varchar2(100),
field3 number,field4 varchar2(100));
create index test2_idx1 on test2(field1);
create index test2_idx2 on test2(field3);
declare
j number :=1;
begin
for i in 1..500000 loop
insert into test2 (field1,field2,field3,field4)
values('field1='||j,'field2='||i,j,'field4='||??i);
if (i mod 1000)=0 then
j:= j+1;
end if;
end loop;
commit;
end;
EXEC DBMS_STATS.GATHER_TABLE_STATS ('user', 'test2');
select * from test2 where field1='field1=1' or field3=1;
Run Code Online (Sandbox Code Playgroud) 我面临一个问题。我有一个疑问
Select * from tabA
where (a) in (a,b,c)
OR b in (a,b,c)
Run Code Online (Sandbox Code Playgroud)
我想由于此查询而面临性能问题,因为我需要删除 or 条件,所以我尝试使用以下查询:
Select * from tabA
where (a,b) in (a,b,c)
Run Code Online (Sandbox Code Playgroud)
但这个查询似乎不起作用,请帮忙。我不想使用“或”条件。
如何在不使用触发器的情况下将条件DEFAULT值设置为oracle中的列?我想达到以下需求:
我在两个表之间有一对多的关系......比如组织和成员
我想基于现有的组织(ID 111)创建一个新的组织,并复制所有成员,但将它们与新创建的组织相关联.
一些伪代码..
-- Just create a new organisation based on the new name and address
-- passed to the proc.
Insert into Organisation (newOrganisationName, newAddress)
returning Organisation_ID into v_orgID;
Run Code Online (Sandbox Code Playgroud)
所以,现在我有v_orgID返回新组织ID的说999,我想成员从现有的组织复制与要说111的ID,并用新ORGID关联这些.
实现这个目标的最佳方法是什么...我应该循环插入还是可以使用Insert Into - select from方法
INSERT INTO Members (OrganisationID, Membername, MemberAddress)
(SELECT v_orgID, MemberName, MemberAddress FROM Member
WHERE OrganisationId = 111)
Run Code Online (Sandbox Code Playgroud)
谢谢米克
我被要求就一个我很少了解的主题做一些事情,需要一些帮助才能指明正确的方向.
我正在研究的问题是:
SharePoint(2003和2010)相对于Oracle APEX的数据管理功能是什么?
Oracle和SharePoint在何种程度上相互通信,以便一个中的数据可以导入另一个中或由另一个读取?
我对此有疑问:1.那里是否有足够的信息来开始回答这两个问题?2.我应该问什么后续问题?3.我的理解是APEX是一个应用程序(如微软访问),而Sharepoint更像是一个框架.那是对的吗?
我无法创建视图 - 我的权限不足.工作流 - >创建角色 - >将创建视图授予角色 - >创建用户 - >向用户添加角色 - >尝试创建视图,我得到错误.任何帮助将不胜感激
创造了一个角色
CREATE ROLE enrolment;
Run Code Online (Sandbox Code Playgroud)
授予以下角色特权 - 基础表hr.students
GRANT insert, select, update
ON hr.students
TO enrolment;
Run Code Online (Sandbox Code Playgroud)
还授予该角色的create view特权
GRANT create view
TO enrolment;
Run Code Online (Sandbox Code Playgroud)
创建了以下用户
CREATE USER enrol1
IDENTIFIED BY pw4321;
Run Code Online (Sandbox Code Playgroud)
将该角色授予该帐户
GRANT enrolment
TO enrol1;
Run Code Online (Sandbox Code Playgroud)
当我尝试在基表hr.students上创建以下视图时,我被告知我没有足够的权限.我可以在基表上运行select语句.
CREATE OR REPLACE VIEW vu_student_name
AS SELECT student_id, lastname
FROM hr.students;
Run Code Online (Sandbox Code Playgroud) oracle ×9
plsql ×5
sql ×4
oracle-apex ×2
collections ×1
constraints ×1
default ×1
hard-coding ×1
indexing ×1
insert ×1
join ×1
literals ×1
oracle10g ×1
oracle11g ×1
performance ×1
select ×1
sharepoint ×1
sorting ×1
to-date ×1