我读过一本名为"Oracle PL SQL Programming"(第2版)的书,由Steven Feuerstein和Bill Pribyl撰写.在页99,有一点建议
除非你真的需要知道"命中"的总数,否则不要从表中"选择COUNT(*)".如果您只需要知道是否有多个匹配,只需使用显式游标获取两次.
你能举个例子向我解释这一点吗?谢谢.
正如Steven Feuerstein和Bill Pribyl建议我们不要使用SELECT COUNT()来检查表中的记录是否存在,任何人都可以帮我编辑下面的代码,以避免使用显式游标而不是使用SELECT COUNT(*)吗?此代码是在Oracle存储过程中编写的.
我有一个表emp(emp_id,emp_name,...),所以检查提供的员工ID是否正确:
CREATE OR REPLACE PROCEDURE do_sth ( emp_id_in IN emp.emp_id%TYPE )
IS
v_rows INTEGER;
BEGIN
...
SELECT COUNT(*) INTO v_rows
FROM emp
WHERE emp_id = emp_id_in;
IF v_rows > 0 THEN
/* do sth */
END;
/* more statements */
...
END do_sth;
Run Code Online (Sandbox Code Playgroud) 我正在为客户端/服务器应用程序中的"客户端"类实现异步命令模式.我以前做过一些套接字编码,我喜欢他们在Socket/SocketAsyncEventArgs类中使用的新异步模式.
我的异步方法如下所示:public bool ExecuteAsync(Command cmd);如果执行挂起则返回true,如果同步完成则返回false.我的问题是:即使出现异常,我是否应该始终调用回调(cmd.OnCompleted)?或者我应该从ExecuteAsync中抛出异常吗?
如果您需要,可以在这里找到更多细节.这类似于使用SocketAsyncEventArgs,但是我的类被称为SomeCmd而不是SocketAsyncEventArgs.
SomeCmd cmd = new SomeCmd(23, 14, 10, "hike!");
cmd.OnCompleted += this.SomeCmd_OnCompleted;
this.ConnectionToServer.ExecuteAsync(cmd);
Run Code Online (Sandbox Code Playgroud)
与Socket类一样,如果需要与回调方法(在本例中为SomeCmd_OnCompleted)进行协调,则可以使用ExecuteAsync的返回值来了解操作是否挂起(true)或操作是否同步完成.
SomeCmd cmd = new SomeCmd(23, 14, 10, "hike!");
cmd.OnCompleted += this.SomeCmd_OnCompleted;
if( this.ConnectionToServer.ExecuteAsync(cmd) )
{
Monitor.Wait( this.WillBePulsedBy_SomeCmd_OnCompleted );
}
Run Code Online (Sandbox Code Playgroud)
这是我的基类的大大简化版本,但您可以看到它的工作原理:
class Connection
{
public bool ExecuteAsync(Command cmd)
{
/// CONSIDER: If you don't catch every exception here
/// then every caller of this method must have 2 sets of
/// exception handling:
/// One in the handler of …Run Code Online (Sandbox Code Playgroud) 我有一个SEL从当前对象获取的代码示例,
SEL callback = @selector(mymethod:parameter2);
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的方法
-(void)mymethod:(id)v1 parameter2;(NSString*)v2 {
}
Run Code Online (Sandbox Code Playgroud)
现在我需要转移mymethod到另一个对象,比如说myDelegate.
我试过了:
SEL callback = @selector(myDelegate, mymethod:parameter2);
Run Code Online (Sandbox Code Playgroud)
但它不会编译.
是否有一个很好的跨浏览器方式来设置max-heightDIV 的属性,当DIV超出时max-height,它会变成带滚动条的溢出?
每次我在我的应用程序中创建一个新表单时,它默认使用"Microsoft Sans Serif,8.25pt"字体.我没有改变它,因为我知道在这种情况下我的表单应该选择系统的默认字体.但是,当我运行我的应用程序时,使用的字体仍然是Segoe UI(我的Windows Vista操作系统中的默认系统字体).
为什么会这样?如何确保我的应用程序看起来像普通的Windows应用程序?
这主要是一个我非常好奇的理论问题.(我不是试图通过自己编写或任何东西来做到这一点,我不是在重新发明轮子.)
我的问题是大写/小写等价表如何适用于Unicode.
例如,如果我必须在ASCII中执行此操作,我会使用一个字符,如果它在[az]范围内,我会将A和a之间的差值相加.
如果它不属于该范围,我会为10个左右的重音字符加上一个小等价表加上ñ.(或者,我可以只有一个包含256个条目的完整等价数组,其中大多数与输入相同)
但是,我猜测有一种更好的方法来指定Unicode中的等价,假设有数十万个字符,理论上,可以添加一种新语言或一组字符(我期待你当发生这种情况时,不需要修补窗口).
Windows是否为每个字符都有一个巨大的硬编码等价表?或者这是如何实现的?
一个相关的问题是SQL Server如何实现基于Unicode的重音不敏感和不区分大小写的查询.它是否有一个内部表格,告诉它éëeÉÉ和Ë都等同于"e"?
在比较字符串时,这听起来不是很快.
它如何快速访问索引?它是否已将索引值转换为其"基本"字符,对应于该字段的整理?
有谁知道这些东西的内部?
谢谢!
有没有人认为可以构建一个Google Docs样式的PDF文档查看器,它可以将文档转换为客户端计算机上不需要Adobe Reader的格式?
如果是这样,任何引用指向?无论是做过它的地方,还是如何去做的解释.