问题
I am creating Procedure in Oracle Forms in which Check Validation data and insert data into table. Also check Validation data If condition true then write Some texts into text file and If condition is not true then write some texts into text file.
Like:
Validation No.1 : OK
Validation No.2 : OK
I created procedure successfully for "TRUE" Condition. Now I want If One Condition is True and 2nd Condition is False then write texts into text file.
Like:
Validation No.1 : OK
Validation No.2 : ERROR
And If both conditions "FALSE" Then
Validation No.1 : ERROR
Validation No.2 : ERROR
Code:
PROCEDURE VALIDATION_TEST
(p_mid we_group_hof_k.mstatusid%TYPE,
p_status we_group_hof_k.cardstatus%TYPE
) is
LC$Line Varchar2(4000);
TFile CLIENT_TEXT_IO.FILE_TYPE ;
begin
insert into test
select mstatusid, cardstatus
from we_group_hof_k
where mstatusid = p_mid
and cardstatus = p_status;
IF p_mid = 1 AND p_status = 'A' THEN
LC$Line := 'log_' || TO_CHAR (SYSDATE, 'yyyymmdd_HH24miss') || '.log';
TFile := CLIENT_TEXT_IO.FOpen( 'E:\HMIS\State\test.log', 'W' );
CLIENT_TEXT_IO.put_line (TFile, 'Log file ' || LC$Line);
CLIENT_TEXT_IO.new_line (TFile);
CLIENT_TEXT_IO.put_line (TFile, 'Job started at: ' || TO_CHAR (SYSDATE, 'dd-mm-yyyy HH24:mi:ss'));
CLIENT_TEXT_IO.new_line (TFile);
CLIENT_TEXT_IO.put_line (TFile, 'Validation No.1 : ' || 'OK');
CLIENT_TEXT_IO.new_line (TFile);
CLIENT_TEXT_IO.put_line (TFile, 'Validation No.2 : ' || 'OK');
CLIENT_TEXT_IO.fclose (TFile);
END IF;
end;
回答1:
You haven't told us what the conditions actually are so you'll need to fill in the details.
CLIENT_TEXT_IO.put (TFile, 'Validation No.1 : ' );
if condition_1 then
CLIENT_TEXT_IO.put_line (TFile, 'OK');
else
CLIENT_TEXT_IO.put_line (TFile, 'ERROR');
end if;
CLIENT_TEXT_IO.new_line (TFile);
CLIENT_TEXT_IO.put (TFile, 'Validation No.2 : ' );
if condition_2 then
CLIENT_TEXT_IO.put_line (TFile, 'OK');
else
CLIENT_TEXT_IO.put_line (TFile, 'ERROR');
end if;
I have total 15 Conditions
In which case you might want to wrap that up into helper function:
PROCEDURE VALIDATION_TEST (p_mid we_group_hof_k.mstatusid%TYPE,
p_status we_group_hof_k.cardstatus%TYPE ) is
LC$Line Varchar2(4000);
TFile CLIENT_TEXT_IO.FILE_TYPE ;
procedure print_validation (
p_file in CLIENT_TEXT_IO.FILE_TYPE
, p_validation_number in number
, p_condition in Boolean )
is
begin
CLIENT_TEXT_IO.new_line (p_file);
CLIENT_TEXT_IO.put (p_file, 'Validation No.'||to_char(p_validation_number) || ': ' );
if p_condition then
CLIENT_TEXT_IO.put_line (p_file, 'OK');
else
CLIENT_TEXT_IO.put_line (p_file, 'ERROR');
end if;
end print_validation;
begin
insert into test
select mstatusid, cardstatus
from we_group_hof_k
where mstatusid = p_mid
and cardstatus = p_status;
IF p_mid = 1 AND p_status = 'A' THEN
LC$Line := 'log_' || TO_CHAR (SYSDATE, 'yyyymmdd_HH24miss') || '.log';
TFile := CLIENT_TEXT_IO.FOpen( 'E:\HMIS\State\test.log', 'W' );
CLIENT_TEXT_IO.put_line (TFile, 'Log file ' || LC$Line);
print_validation(TFile, 1, condition_1);
print_validation(TFile, 2, condition_2);
...
print_validation(TFile, 15, condition_15);
CLIENT_TEXT_IO.fclose (TFile);
END IF;
end;
来源:https://stackoverflow.com/questions/55805735/how-to-check-conditions-and-write-text-into-text-file-oracle-forms