📄 testaorasql.pas
字号:
CheckEquals(0, SQL.CurrentRecord);
CheckEquals('kkkkkkkkkk', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('one', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(2, SQL.RecordCount);
CheckEquals(1, SQL.CurrentRecord);
CheckEquals('qqqqqqqqqq', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('two', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(3, SQL.RecordCount);
CheckEquals(2, SQL.CurrentRecord);
CheckEquals('cccccccccc', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('three', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.RecordCount);
CheckEquals(3, SQL.CurrentRecord);
CheckEquals('gggggggggg', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('four', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(5, SQL.RecordCount);
CheckEquals(4, SQL.CurrentRecord);
CheckEquals('iiiiiiiiii', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('five', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(4, SQL.CurrentRecord);
SQL.Next;
CheckEquals(True, SQL.EOF);
CheckEquals(5, SQL.CurrentRecord);
SQL.Next;
CheckEquals(True, SQL.EOF);
CheckEquals(SQL.RecordCount, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(3, SQL.CurrentRecord);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.CurrentRecord);
SQL.Next;
CheckEquals(True, SQL.EOF);
CheckEquals(SQL.RecordCount, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(3, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(2, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(1, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(0, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(0, SQL.CurrentRecord);
SQL.First;
CheckEquals(False, SQL.EOF);
CheckEquals(5, SQL.RecordCount);
CheckEquals(0, SQL.CurrentRecord);
CheckEquals('kkkkkkkkkk', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('one', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
FreeAndNil(SQL);
end;
procedure TTestAOraSQL.testAOraSQLUniDirectonal1;
begin
fillTestTable;
SQL.UniDirectional := True;
SQL.SetQuery('select * from test order by f5');
SQL.FetchCount := 1;
SQL.LoadFields();
CheckEquals(6, SQL.FieldCount);
CheckEquals(True, SQL.UniDirectional);
SQL.Open;
CheckEquals(-1, SQL.CurrentRecord);
CheckEquals(0, SQL.RecordCount);
CheckEquals(False, SQL.EOF);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(1, SQL.RecordCount);
CheckEquals(0, SQL.CurrentRecord);
CheckEquals('kkkkkkkkkk', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('one', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(2, SQL.RecordCount);
CheckEquals(1, SQL.CurrentRecord);
CheckEquals('qqqqqqqqqq', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('two', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(3, SQL.RecordCount);
CheckEquals(2, SQL.CurrentRecord);
CheckEquals('cccccccccc', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('three', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.RecordCount);
CheckEquals(3, SQL.CurrentRecord);
CheckEquals('gggggggggg', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('four', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(5, SQL.RecordCount);
CheckEquals(4, SQL.CurrentRecord);
CheckEquals('iiiiiiiiii', SQL.FieldByIndex[0].AsString[SQL.CurrentRecord]);
CheckEquals(77777.7878, SQL.FieldByIndex[1].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals('five', SQL.FieldByIndex[2].AsString[SQL.CurrentRecord]);
// CheckEquals(12121212121212121212.0, SQL.FieldByIndex[3].AsDouble[SQL.CurrentRecord], 0.0000005);
CheckEquals(SQL.CurrentRecord, SQL.FieldByIndex[4].AsDouble[SQL.CurrentRecord]);
CheckEquals(0.0000000000000000006, SQL.FieldByIndex[5].AsDouble[SQL.CurrentRecord], 0.0000005);
SQL.Next;
CheckEquals(True, SQL.EOF);
CheckEquals(5, SQL.CurrentRecord);
SQL.Next;
CheckEquals(True, SQL.EOF);
CheckEquals(SQL.RecordCount, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(3, SQL.CurrentRecord);
SQL.Next;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.CurrentRecord);
SQL.Next;
CheckEquals(True, SQL.EOF);
CheckEquals(SQL.RecordCount, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(4, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(3, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(2, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(1, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(0, SQL.CurrentRecord);
SQL.Prev;
CheckEquals(False, SQL.EOF);
CheckEquals(0, SQL.CurrentRecord);
SQL.Next;
SQL.Next;
try
SQL.First;
except
on E:Exception do
CheckEquals('First method call not allowed when UniDirectional is True!', E.Message);
end;
FreeAndNil(SQL);
end;
procedure TTestAOraSQL.testAOraSQLUniDirectonal2;
begin
fillTestTable;
SQL.UniDirectional := True;
SQL.SetQuery('select * from test order by f5');
SQL.FetchCount := 2;
SQL.LoadFields();
CheckEquals(6, SQL.FieldCount);
CheckEquals(True, SQL.UniDirectional);
SQL.Open;
CheckEquals(-1, SQL.CurrentRecord);
CheckEquals(0, SQL.RecordCount);
CheckEquals(False, SQL.EOF);
SQL.ReadAll;
CheckEquals(-1, SQL.CurrentRecord);
CheckEquals(5, SQL.RecordCount);
CheckEquals(False, SQL.EOF);
SQL.Next;
SQL.Next;
CheckEquals(True, SQL.EOF);
SQL.Prev;
CheckEquals(False, SQL.EOF);
SQL.Next;
CheckEquals(True, SQL.EOF);
SQL.Prev;
CheckEquals(False, SQL.EOF);
SQL.Prev;
CheckEquals(False, SQL.EOF);
SQL.Prev;
CheckEquals(False, SQL.EOF);
SQL.Prev;
CheckEquals(False, SQL.EOF);
try
SQL.First;
except
on E:Exception do
CheckEquals('First method call not allowed when UniDirectional is True!', E.Message);
end;
FreeAndNil(SQL);
end;
procedure TTestAOraSQL.testAOraSQLReadBlobAsParamEmpty;
begin
SQL.SetQuery('delete from test3');
SQL.ExecSQL;
SQL.SetQuery('begin select F13 into :aaa from test3; end;');
SQL.FetchCount := 1;
SQL.AddParam('aaa', ftoBlob, ptoOutput);
try
SQL.ExecSQL;
except
on E:EOraError do
CheckEquals(0, E.ErrorCode);
end;
FreeAndNil(SQL);
end;
procedure TTestAOraSQL.testAOraSQLReadBlobAsParam;
var
par:TAParam;
buf:array[1..16384] of byte;
begin
SQL.SetQuery('delete from test3');
SQL.ExecSQL;
SQL.SetQuery('insert into test3 (F1, F2) values (''char'',''varchar'')');
SQL.ExecSQL;
SQL.SetQuery('begin select F13 into :aaa from test3; end;');
SQL.FetchCount := 1;
SQL.AddParam('aaa', ftoBlob, ptoOutput);
// SQL.AddParam('aaa', ftoString, ptoOutput);
SQL.ExecSQL;
CheckEquals(1, SQL.ParamCount);
par := SQL.ParamByName['aaa'];
CheckEquals(0, par.GetLobLength);
CheckEquals(0, par.ReadBlob(0, @buf, 16384));
FreeAndNil(SQL);
end;
procedure TTestAOraSQL.testAOraSQLRawDataType;
begin
SQL.SetQuery('select * from test2');
SQL.LoadFields;
end;
procedure TTestAOraSQL.testAOraSQLUpdateRawData;
var
buf:array[1..16384] of byte;
begin
SQL.SetQuery('select * from test5 for update');
SQL.LoadFields;
SQL.OpenAll;
StrPCopy(@buf, 'ddddddddd');
SQL.FieldByName['F2'].WriteBlob(0, 0, @buf, 16384);
SQL.Close;
end;
procedure TTestAOraSQL.testAOraSQLSelectNULL;
var
i: Integer;
begin
SQL.SetQuery('select null, t.* from test t ');
SQL.LoadFields;
SQL.OpenAll;
for i := 0 to SQL.RecordCount - 1 do
begin
CheckEquals('', SQL.FieldByName['null'].AsString[i]);
end;
SQL.Close;
end;
procedure TTestAOraSQL.testAOraSQLInsertLargeCLOB;
var
i: Integer;
buf:array[1..16384] of byte;
begin
SQL.SetQuery('insert into test4 (F13) values(EMPTY_BLOB())');
SQL.ExecSQL;
SQL.SetQuery('select F13 from test4 for update');
SQL.LoadFields;
SQL.OpenAll;
for i := 0 to 1000 do
begin
SQL.FieldByName['F13'].WriteBlob(0, 0, @buf, 16384);
end;
SQL.Close;
end;
initialization
TestFramework.RegisterTest(TTestAOraSQL.Suite);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -