How to check conditions and write text into text file oracle forms

夙愿已清 提交于 2019-12-02 19:27:34

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!