我有一个表定义两个变体之间的规则:
CREATE TABLE VARIANTCOMBINATIONRULE
(
VARRECID0 NUMBER(10) NOT NULL,
VARRECID1 NUMBER(10) NOT NULL,
RULE NUMBER
);
ALTER TABLE VARIANTCOMBINATIONRULE ADD (
CONSTRAINT VARIANTCOMBINATIONRULE_PK
PRIMARY KEY
(VARRECID0, VARRECID1));
Run Code Online (Sandbox Code Playgroud)
如何创建不允许"反向对"的约束?我的意思是,如果有变体12和14的记录,则不应允许反向对(14和12)的新记录.
我有一个变量vBit,它是一个无符号的int64.我知道只有一个位设置,我需要弄清楚它是哪一个.目前我这样做(在Delphi中):
vPos := -1;
repeat
vBit := vBit shr 1;
inc(vPos);
until vBit = 0;
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?所有位位置都是相同的,因此平均而言算法需要迭代32次.我正在寻找与ands和xors以及诸如此类的优雅技巧.
在我们的Oracle数据库中,我们有一个名为RULES的表,其中包含一个名为SQLQUERY的字段.该字段是一个存储了SQL语句的varchar.PK是DM_PROJECT.
存储的典型语句可以是
select ACCOUNTNUMBER from CUSTOMERS where ACCUMULATED_SALES > 500000
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
select
*
from
customers
where
accountnumber like 'A%'
or salesregion = 999
or accountnumber in
(
<run the query SQLQUERY from RULES where DM_PROJECT=:DM_PROJECT>
)
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
(次要问题:如果存储的查询使用自己的变量,可以这样做,例如
select ACCOUNTNUMBER from CUSTOMERS where ACCUMULATEDSALES > :LIMIT
Run Code Online (Sandbox Code Playgroud)
)
请考虑以下代码:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
vRect : TRect;
vFormat : TTextFormat;
vStr : string;
begin
vStr := 'This is some text';
vRect := rect(10,10,50,130);
vFormat := [tfCenter,tfVerticalCenter,tfWordBreak];
PaintBox1.Canvas.Rectangle(vRect);
PaintBox1.Canvas.TextRect(vRect,vStr,vFormat);
end;
Run Code Online (Sandbox Code Playgroud)
我希望这样的事情
+--------+
| |
| |
|This is |
| some |
| text |
| |
| |
+--------+
Run Code Online (Sandbox Code Playgroud)
但我明白了
+--------+
|This is |
| some |
| text |
| |
| |
| |
| |
+--------+
Run Code Online (Sandbox Code Playgroud)
tfBottom格式也是如此.水平文本格式(tfLeft,tfRight,tfCenter)按预期工作,但垂直格式不工作.有谁能解释一下?
使用演员表(收集(...))时,如何订购结果?
我有一个名为GetStringForTable的函数,定义如下:
FUNCTION GetStringForTable(vTable in TVarCharTable, vDelimeter in varchar default ',') return VarChar2 is
aResult varchar2(32767);
i int;
begin
if vTable.count = 0 then
return '';
end if;
for i in 1 .. vTable.Count loop
if i > 1 then
aResult := aResult || vDelimeter;
end if;
aResult := aResult || vTable(i);
end loop;
return aResult;
end GetStringForTable;
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
select
name,
rep.GetStringForTable
((
Select
cast(collect(name) as TVarCharTable)
from
contacts
where
debtoraccount = dt.accountnumber
)
,', ' --Delimiter
) "Contacts"
from …Run Code Online (Sandbox Code Playgroud) 首先,对于冗长的代码示例感到抱歉,但我认为需要说明我的问题.
作为调试帮助,我经常在我的对象上引入一个"DebugString"方法,它返回一个简洁的对象摘要.但有时我的对象太复杂而无法在单个字符串中进行最佳表示,因此我使用字符串列表.现在,我想使用Delphi中出色的调试可视化器来监视我的对象.我这样做的方法是引入一个带有getter的属性来重建stringlist.
这种方法有效,但对于我追踪的每一行,属性都超出了范围,因此我必须再次单击观察窗口中的放大镜才能看到该值.为什么是这样?
要重现,请创建一个新的控制台应用程序:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes;
type
TMyClass = class
private
FInternalData : array[0..4] of integer;
FDebugStringList : TStringList;
procedure RebuildDebugStringlist;
function GetDebugStringList: TStringList;
function GetDebugString : string;
public
constructor Create;
destructor Destroy; override;
procedure Scramble;
property DebugStringList : TStringList read GetDebugStringList;
property DebugString : string read GetDebugString;
end;
constructor TMyClass.Create;
begin
FDebugStringList := TStringList.Create;
end;
destructor TMyClass.Destroy;
begin
FDebugStringList.Free;
inherited;
end;
function TMyClass.GetDebugString: string;
var
I : integer;
begin
Result := 'Object state: '; …Run Code Online (Sandbox Code Playgroud) 这个问题可能是蟾蜍特有的。我不知道Oracle如何存储视图,因此我将解释使用Toad时发生的情况。如果我得到一个特定于Oracle的答案,那就更好了。
我创建了一个相当复杂的视图。为了更加清楚,我已经很好地格式化了代码,并在需要的地方输入了一些注释。当需要更改视图时,可以使用Toad的“描述对象”窗口,在该窗口中可以找到用于重新创建视图的脚本。唯一的问题是我所有的格式都消失了。select关键字前面的注释(但在“ create view xxx as”之后)也将消失。
如果输入此脚本来创建视图:
create or replace view TestViewFormatting as
-- Here I have a long comment explaining the role of the
-- view and certain things to be aware of if changing it.
-- Unfortunately this comment will disappear...
select
name, --This comment will be kept
accountnumber --This also
from
debtable
where
name like 'S%';
Run Code Online (Sandbox Code Playgroud)
当我稍后描述时,Toad将显示它:
DROP VIEW XXX.TESTVIEWFORMATTING;
/* Formatted on 04.07.2012 09:35:45 (QP5 v5.185.11230.41888) */
CREATE OR REPLACE FORCE VIEW XXX.TESTVIEWFORMATTING
(
NAME,
ACCOUNTNUMBER …Run Code Online (Sandbox Code Playgroud) 我有一个带有一些功能的 Word 文档。我想在公式字段中访问这些函数,但这比预期的要难。
假设我有一个函数定义为
Public Function Area(R As Double) As Double
Area = 3.14 * R * R
End Function
Run Code Online (Sandbox Code Playgroud)
并且我想在一个领域中使用它,就像这样
{ = Area(RadiusBookmark) }
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我收到一个语法错误。如果我省略参数,像这样
{ = Area }
Run Code Online (Sandbox Code Playgroud)
我收到“未定义书签”错误,这让我相信只有书签可用于公式代码字段。
我有一个包含SQL语句的字符串.我想知道查询是否会修改数据或数据库结构,或者它是否只读取数据.有办法做到这一点吗?
更多信息:在我们的应用程序中,我们需要让用户输入SQL查询,主要是作为应用程序报告系统的一部分.应允许这些SQL查询从数据库中读取他们喜欢的任何内容,但不应允许他们修改任何内容.没有更新,删除插入,表格丢弃,约束删除等.
截至目前,我只测试字符串中的第一个单词是否为"select",但这太紧凑而且太不安全.
有谁知道OpenOffice字典文件的格式是什么?据我所知,每行有一个单词,有些标志可能会告诉我一些关于这个单词的内容.
以英语词典中的几行为例:
absoluteness/S
absorbency/SM
abstract/ShTVDPiGY
absurdness/S
Run Code Online (Sandbox Code Playgroud)
从挪威语词典中,我将使用它:
flatorm/AEG
flatpresse/W
flatseng/ACEG
flatside/ACDEFGHJ
flatskjerm/A
Run Code Online (Sandbox Code Playgroud)
例如"/ AEG"和"/ S"是什么意思?我假设每个字母/标志都有一定的含义,因此"/ AEG"中的A表示与"/ ACDEFGHJ"中的A相同.
我在各地搜索过,但我找不到任何信息.
oracle ×5
delphi ×3
sql ×3
canvas ×1
constraints ×1
database ×1
debugging ×1
delphi-xe ×1
dictionary ×1
fieldcodes ×1
file-format ×1
graphics ×1
ms-word ×1
ora-00907 ×1
parsing ×1
rules ×1
sanitization ×1
sql-view ×1
toad ×1
vba ×1