关于是什么让一个人比另一个更好,我听到了许多不同的意见.但任何人都可以提供技术解释,说明为什么我应该选择一个单元测试框架而不是另一个.例如,我使用Visual Studio Team System.为什么我会选择一个开源测试框架(NUnit,xUnit,MbUnit等)而不是Visual Studio的内置单元测试功能?有关系吗?
编辑:要明确,我不是在寻找关于"哪个单元测试框架最好"的意见......我正在寻找关于它们如何不同的技术细节.
我的PL/SQL代码类似于以下代码段:
create or replace
package body MY_PACKAGE as
type array_type is table of char index by varchar2(1);
lookup_array array_type;
function DO_SOMETHING(input nvarchar2)
return varchar2 as
begin
-- Do something here with lookup_array
end DO_SOMETHING;
procedure init_array as
begin
lookup_array('A') := 'a';
lookup_array('B') := 'b';
-- etc
end init_array;
begin
init_array;
end MY_PACKAGE;
Run Code Online (Sandbox Code Playgroud)
它使用静态查找数组来处理提供给DO_SOMETHING的数据.我的问题是,什么时候调用init_array并将lookup_array加载到内存中?什么时候编译包?什么时候第一次打电话?是不是一次被召唤?有没有更好的方法来实现静态查找数组?
谢谢!
我一直在网上搜索一个很好的例子,但无法弄清楚如何以编程方式向ActiveReports报告添加分页符.我正在处理的报告通常需要每页1-2页.为了支持报告的双面打印,我想为每个使用奇数页的记录插入空白页,确保每个新记录都打印在每个打印页的正面.
我是ActiveReports的新手,所以任何建议,代码示例或链接都非常感谢!
免责声明:我刚开始研究新合同,这迫使我从MSSQL切换到Oracle.所以我是Oracle的全新人,可能会给我带来许多糟糕的MSSQL实践.好的,关于这个问题......
根据这个帖子的答案,分号是坏的,应该避免.我花了好几个小时试图弄清楚为什么我的查询在SQL Developer中运行得非常慢,我意识到了这一点.从复杂查询结束时删除分号后,它在几秒钟内完成(与我在几分钟后放弃它相比,在删除分号之前就是这种情况).这种行为让我吃了一惊,谷歌搜索没有多少关于我应该或不应该在我的SQL语句中使用分号的时间和原因.任何人都可以通过简短的解释清楚这一点吗?
如果您有可用于从MSSQL迁移到Oracle的穷人开发人员的在线资源的链接,那么我将非常感激!
谢谢!
我发现特定表上使用的分区会损害查询性能,并且希望从表中删除这些分区。是否有捷径可寻?该表有 64 个分区。根据一些初步调查,我提出了以下选项。有没有更好的办法?
想法?
我正在查看我在网上找到的Oracle脚本,但是它运行了一个sed命令来过滤跟踪文件的结果.我在Windows服务器上运行Oracle,因此无法识别sed命令.
host sed -n '/scattered/s/.*p3=//p' &Trace_Name | sort -n | tail -1
Run Code Online (Sandbox Code Playgroud)
我已经尝试阅读在线文档,但我仍然不确定如何解释此命令试图过滤的内容.有人会非常友好地帮助我解释这个命令试图过滤的内容吗?或者更好的是,我可以从Windows命令提示符运行以获得相同的结果.
谢谢!
我有一个SQL Server 2000数据库,其列为VARCHAR(255)类型.所有数据都是NULL或具有最多两个精度点的数字数据(例如'11 .85').我试图运行以下T-SQL查询但收到错误'错误将数据类型varchar转换为数字'
SELECT CAST([MyColumn] AS DECIMAL)
FROM [MyTable];
Run Code Online (Sandbox Code Playgroud)
我尝试了一个更具体的演员,也失败了.
SELECT CAST([MyColumn] AS DECIMAL(6,2))
FROM [MyTable];
Run Code Online (Sandbox Code Playgroud)
我还尝试了以下内容来查看是否有任何数据是非数字的,并且返回的唯一值是NULL.
SELECT ISNUMERIC([MyColumn]), [MyColumn]
FROM [MyTable]
WHERE ISNUMERIC([MyColumn]) = 0;
Run Code Online (Sandbox Code Playgroud)
我试图转换为其他数据类型,例如FLOAT和MONEY,但只有MONEY成功.所以我尝试了以下方法:
SELECT CAST(CAST([MyColumn] AS MONEY) AS DECIMAL)
FROM [MyTable];
Run Code Online (Sandbox Code Playgroud)
......工作得很好.原始查询失败的任何想法?如果我先转换为MONEY然后再转换为DECIMAL,是否会出现问题?
谢谢!
我将通过声明我正在使用Oracle 10g企业版并且我对Oracle相对较新来解释这个问题.
我有一个包含以下架构的表:
ID integer (pk) -- unique index
PERSON_ID integer (fk) -- b-tree index
NAME_PART nvarchar -- b-tree index
NAME_PART_ID integer (fk) -- bitmap index
Run Code Online (Sandbox Code Playgroud)
它PERSON_ID是人员记录的唯一ID的外键.这NAME_PART_ID是具有静态值的查找表的外键,如"名字","中间名","姓氏"等.表的要点是分别存储人名的各个部分.每个人的记录至少都有一个名字.在尝试提取数据时,我首先考虑使用连接,如下所示:
select
first_name.person_id,
first_name.name_part,
middle_name.name_part,
last_name.name_part
from
NAME_PARTS first_name
left join
NAME_PARTS middle_name
on first_name.person_id = middle_name.person_id
left join
NAME_PARTS last_name
on first_name.person_id = last_name.person_id
where
first_name.name_part_id = 1
and middle_name.name_part_id = 2
and last_name.name_part_id = 3;
Run Code Online (Sandbox Code Playgroud)
但该表有数千万条记录,并且NAME_PART_ID未使用该列的位图索引.解释计划表明优化器正在使用全表扫描和散列连接来检索数据.
有什么建议?
编辑:表格设计的原因是因为数据库用于几种不同的文化,每种文化都有不同的个人命名惯例(例如在一些中东文化中,个人通常有名字,然后他们的父亲的名字,然后他父亲的名字等).很难创建一个包含多个列的表来解释所有文化差异.
我试图从这个Oracle查询中获得更好的性能(这非常慢).我是Oracle初学者,所以也许有人可以指出一种更好的方法来处理这个问题.
我有一张表格,里面有关于不同家庭的信息.我想根据关系类型提取不同的关系.我想出的解决方案使用散列连接来查询数据库...
select *
from (
with target_person as (
select
p.person_id,
p.family_number,
p.relationship_type_id
from
people p
where
p.relationship_type_id = 1 -- parent
)
select
target_person.person_id,
related_person.related_person_id,
related_person.relationship_type_id
from
target_person,
people related_person
where
target_person.person_id != related_person.person_id
and target_person.family_number = related_person.family_number
and related_person.relationship_type_id = 1
);
Run Code Online (Sandbox Code Playgroud) oracle ×5
oracle10g ×3
sql ×2
.net ×1
optimization ×1
partitioning ×1
performance ×1
plsql ×1
reporting ×1
sed ×1
sql-server ×1
t-sql ×1
unit-testing ×1