我想使用select中的单行生成以下输出.
SELECT max(t1.id)+1 as new_id FROM t1;
-> 101
However I want to do
SELECT s.last_id, sequence(1..100000000) as new_id
FROM (SELECT max(table1.id)+1 as last_id FROM table1) s;
-> 101,1
-> 101,2
-> 101,3
......
-> 101,100000000
Run Code Online (Sandbox Code Playgroud)
在postgreSQL中,我可以使用:
SELECT s.last_id, generate_series(1,100000000)
FROM (SELECT max(table1.id)+1 as last_id FROM table1) s; -- returns 100,000,000 rows
Run Code Online (Sandbox Code Playgroud)
如何在不使用临时表的情况下在MySQL中执行此操作?
我正在使用以下代码创建我的第一个函数:
CREATE FUNCTION CTRLPRODUCAO.COMPARATOTAIS (AG INT, P INT, ANO INT)
RETURNS BOOLEAN DETERMINISTIC
BEGIN
(...)
END
Run Code Online (Sandbox Code Playgroud)
当我运行该命令时,收到了Workbench的返回:"0行受影响".好吗?
当我运行SELECT CTRLPRODUCAO.COMPARATOTAIS(1,9,2011)AS TEST时;
我明白了
"错误代码:1305 FUNCTION CTRLPRODUCAO.COMPARATOTAIS不存在"
我究竟做错了什么?
我正在尝试编写一个简单的firemonkey测试应用程序.
我有一个表单,有一个面板(align:= alClient).
表格上是2 TCircle.我已经设置了TCircle.Dragmode:= dmAutomatic.
我想拖动圆圈并在圆圈重叠时发生一些事情.
问题是:我没有在TCircle中看到任何称为重叠的方法,也没有看到一个名为重叠的事件.我已经尝试了所有的xxxxDrag事件,但这对我的测试没有帮助.
如何查看拖动的形状何时与另一个形状重叠?
我期待的一个DragOver,DragEnter事件检测这对我来说,但是这似乎并不如此.
当然在Firemonkey中必须有一些标准方法吗?
现在pas文件看起来像:
implementation
{$R *.fmx}
procedure TForm8.Circle1DragEnter(Sender: TObject; const Data: TDragObject;
const Point: TPointF);
begin
if Data.Source = Circle1 then Button1.Text:= 'DragEnter';
end;
procedure TForm8.Circle1DragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Accept: Boolean);
begin
if (Data.Source = Circle2) then Button1.Text:= 'Circle2 drag';
end;
procedure TForm8.Circle2DragEnd(Sender: TObject);
begin
Button1.Text:= 'DragEnd';
end;
procedure TForm8.Circle2DragEnter(Sender: TObject; const Data: TDragObject;
const Point: TPointF);
begin
Button1.Text:= 'DragEnter';
end; …Run Code Online (Sandbox Code Playgroud) 嗨伙计们我想尝试做类似的事情
SELECT * from accounttable, peopletable, companytable
WHERE if accounttable.account_type = company
JOIN companytable
WHERE companytable.id = accounttable.company_id
ELSE IF accounttable.account_type = = person
JOIN peopletable
WHERE peopletable.id = accounttable.person_id
Run Code Online (Sandbox Code Playgroud)
对不起它有点sqlenglish但我真的不知道如何写出来!
在使用TADODataSet组件访问Access数据库的Delphi应用程序中,有什么方法可以在将记录写入磁盘时从文本字段中删除前导和尾随空格?或者在检索数据时,但不修改我的所有查询.
我的意思是在ADO引擎中,没有编写自己Trim()在BeforePost每个表上使用.
我有一个处理大量数据的应用程序.
当工作集超过L2(L3)时,缓存性能急剧下降.
我想使用预取数据来解决部分问题.
我想利用在超线程CPU上运行的多线程代码共享核心和缓存这一事实.
第一个线程(A)是工作线程.
第二个线程(B)预取数据.
如果我可以强制两个线程在同一个核心上执行,我可以让线程(B)运行并获取数据.
以下是伪代码的外观.
procedure TWorkerThread.Execute;
begin
Node:= WalkTheDataTree.GetNode;
Dowork(Node.MyData);
SyncWithThreadB;
end;
procedure TFetchThread.Execute;
begin
WaitForThreadA;
Node:= WalkTheDataTree_5_nodes_Ahead_of_A.GetNode; //Prefetch data.
end;
Run Code Online (Sandbox Code Playgroud)
两个线程都以锁步方式执行,工作线程以全速运行,而获取线程等待信号.
有没有办法强制两个线程在HyperThreaded CPU上的同一核心中运行?
我正在使用Delphi XE2.
PS我知道如何使用CPUID指令检测CPU是否支持超线程.
我为什么要来
[DCC错误] ProjectCOWArray.dpr(23):E2426内联函数不能包含asm块
program ProjectCOWArray;
{$APPTYPE CONSOLE}
{$R *.res}
type
PRefCount = ^TRefCount;
TRefCount = array[0..1] of integer;
TCOWArray<T> = record
private
fData: TArray<T>;
private
procedure IncRefCount; <<-- not inline
end;
{ TCOWArray<T> }
procedure TCOWArray<T>.IncRefCount;
asm
{$if defined(win32)}
mov eax,fData;
lock inc dword ptr [eax - 8];
{$ifend}
{$if defined(win64)}
mov rax,fData;
lock inc dword ptr[rax -12];
{$ifend}
end;
begin
end.
Run Code Online (Sandbox Code Playgroud)
Delphi XE2没有AtomicIncrement,所以如何解决这个问题呢?
它想保留汇编程序,因为否则我不能使用lock前缀,我不想使用,InterlockedIncrement因为这是一个WinAPI函数,我不希望这种开销.
我想声明一个通用记录,如下所示:
type
TMyDelegate<T: constraint> = record
private
fDelegate: T;
public
class operator Implicit(a: T): TMyDelegate;
class operator Implicit(A: TMyDelegate: T);
end;
Run Code Online (Sandbox Code Playgroud)
我想限制T到reference to procedure/function.(越多越好).
我试过这个,但它没有编译:
program Project3;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
TProc1 = reference to procedure(a: Integer);
TProc2 = reference to procedure(b: TObject);
TTest<T: TProc1, TProc2> = record
private
fData: T;
public
class operator Implicit(a: T): TTest<T>;
class operator Implicit(a: TTest<T>): T;
end;
{ TTest<T> }
class operator TTest<T>.Implicit(a: T): TTest<T>;
begin
Result.fData:= …Run Code Online (Sandbox Code Playgroud) 我可以使用类操作符来使用中间保持记录.
这样我就可以隐式转换内置类型了.
program TestNewStringHelper;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
type
TStringRecord = record
private
Data: string;
public
class operator Implicit(const a: TStringRecord): Integer; inline;
class operator Implicit(const a: string): TStringRecord; inline;
end;
{ TStringRecord }
class operator TStringRecord.Implicit(const a: string): TStringRecord;
begin
pointer(Result.Data):= pointer(a);
end;
class operator TStringRecord.Implicit(const a: TStringRecord): Integer;
begin
Result:= StrToInt(a.Data);
end;
var
input: TStringRecord;
output: integer;
begin
input:= '42';
output:= input;
WriteLn(IntToStr(output));
ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)
我想做一些相反的事情:
var
input: string;
output: integer;
begin
input:= '42';
output:= input; //Class operator …Run Code Online (Sandbox Code Playgroud) 在 cuda 示例中,例如这里,__match_all_sync__match_any_sync 用来。
这是一个例子,其中一个经线被分成多个(一个或多个)组,每个组都跟踪自己的原子计数器。
// increment the value at ptr by 1 and return the old value
__device__ int atomicAggInc(int* ptr) {
int pred;
//const auto mask = __match_all_sync(__activemask(), ptr, &pred); //error, should be any_sync, not all_sync
const auto mask = __match_any_sync(__activemask(), ptr, &pred);
const auto leader = __ffs(mask) - 1; // select a leader
int res;
const auto lane_id = ThreadId() % warpSize;
if (lane_id == leader) { // leader does the update
res …Run Code Online (Sandbox Code Playgroud) delphi ×6
delphi-xe2 ×3
mysql ×3
ado ×1
cuda ×1
database ×1
firemonkey ×1
function ×1
generics ×1
gpu-warp ×1
hittest ×1
if-statement ×1
select ×1