Professional Documents
Culture Documents
Practice PL/SQL Examples - Part 1: Thursday, September 17, 2009
Practice PL/SQL Examples - Part 1: Thursday, September 17, 2009
IS BEGIN DBMS_OUTPUT.PUT('*'); print_space(space_btn_stars); DBMS_OUTPUT.PUT('*'); END; /* ################ Procedure to print a star and a space ################################*/
/*################## Procedure to print ! #################################################*/ PROCEDURE single_special(no_of_single NUMBER) IS BEGIN FOR single_char in 1 .. no_of_single LOOP DBMS_OUTPUT.PUT('!'); END LOOP; END; /*################## end of Procedure to print ! #################################################*/ /*################## Procedure to print * #################################################*/ PROCEDURE single_star(no_of_star NUMBER) IS BEGIN FOR single_char in 1 .. no_of_star LOOP DBMS_OUTPUT.PUT('*'); END LOOP; END; /*################## end of Procedure to print ! #################################################*/ /* ################### Procedure to print single ~ #########################################*/ PROCEDURE single_tilda(no_of_tilda NUMBER) IS
BEGIN FOR single_tilda_loop in 1 .. no_of_tilda LOOP DBMS_OUTPUT.PUT('~'); END LOOP; END; /* ################### end of Procedure to print single ~ #########################################*/ /* ################## Procedure to print hash # ################################################# */ PROCEDURE single_hash(no_of_hash NUMBER) IS BEGIN FOR single_hash_loop in 1 .. no_of_hash LOOP DBMS_OUTPUT.PUT('#'); END LOOP; END; /* ################## end of Procedure to print hash # ################################################# */ /* ###########################PROCEDURE to pring percent % #############################################*/ PROCEDURE single_percent(no_of_percent NUMBER) IS BEGIN FOR single_percent_loop in 1 .. no_of_percent LOOP DBMS_OUTPUT.PUT('%'); END LOOP; END; /* ########################### end of PROCEDURE to pring percent % #########################################*/
IS BEGIN FOR single_percent_loop in 1 .. no_of_line LOOP DBMS_OUTPUT.PUT('|'); END LOOP; END; /* ###########################end of PROCEDURE to pring line | #############################################*/
/* #################### Procedure to print ~! in a set ##################################*/ PROCEDURE special_char_verti(no_of_special NUMBER) IS BEGIN FOR special_char in 1 .. no_of_special LOOP DBMS_OUTPUT.PUT('~!'); END LOOP; END; /* #################### end of Procedure to print !~ in a set ##################################*/ --- ~~~~~~~ printing begins from here ~~~~~~~~~~~----/* ################Procedure to print the pines of Charminar #################################*/ PROCEDURE front_pines IS BEGIN -- print the 1st and 2nd pine tips print_space(given_front_space); -- print the space in front of the tip of the pine two_star_and_1space(given_space_btn_minars); -- prints the tip of the two front pines dbms_output.new_line; -- reduce the front space and the middle space by 1 and 2 to get the slant look of the pine given_front_space := given_front_space - 1;
given_space_btn_minars := given_space_btn_minars - 2; FOR tip_of_loop in 1 .. 2 LOOP -- prints the 1st pine in the front two pines print_space(given_front_space); two_star_and_1space(1); -- prints the 2nd pine in the front two pines print_space(given_space_btn_minars); two_star_and_1space(1); dbms_output.new_line; END LOOP; END; /* ################End of Procedure to print the pines of Charminar #################################*/ /*############### Procedure to print the two domes in the front two minars ########################*/ PROCEDURE front_domes IS BEGIN -- first front dome given_front_space := given_front_space - 2; -- remove 2,coz bulge from pine to dome space_btn_front_dome1 := 2 + 3 + 2; --ie space reduced frm front space, pines two stars and one space, -- and 4 space before the last star -- print first dome with the front space print_space(given_front_space); two_star_and_1space(space_btn_front_dome1); -- second front dome given_space_btn_minars := given_space_btn_minars - space_btn_front_dome1; -remove the btn_dome1,coz -- the center space starts from the middle and so consider the middle space 3 + two 2 sides
space_btn_front_dome2 := 2 + 3 + 2; -- print the second dome with the front space print_space( given_space_btn_minars); two_star_and_1space(space_btn_front_dome2); dbms_output.new_line;
-- first front dome for slant look given_front_space := given_front_space - 2; space_btn_front_dome1 := space_btn_front_dome1 + 2 + 2; -- second front dome for slant look given_space_btn_minars := given_space_btn_minars - 4 ; -- remove only 4 coz, dont have to consider the center space -- coz, the center space is already removed from the first star of the dome space_btn_front_dome2 := space_btn_front_dome2 + 2 + 2; -- space_btn_front_dome1 = space_btn_front_dome2 FOR top_domes in 1 .. 2 LOOP -- print first dome with the front space print_space(given_front_space); two_star_and_1space(space_btn_front_dome1);
-- print the second dome with the front space print_space( given_space_btn_minars); two_star_and_1space(space_btn_front_dome2); dbms_output.new_line;
END LOOP; END; /*############### END of Procedure to print the two domes in the front two minars
########################*/ /* ###################### Procedure to print the first horizontal line in front minars ################# */ PROCEDURE first_hori_frnt_minar(p_front_space NUMBER,p_space_btn_front_dome NUMBER,p_space_btn_minars NUMBER) IS BEGIN -- to print the 1st vertical bar in the 1st front minar print_space(p_front_space); single_special(1); special_char_verti(p_space_btn_front_dome/3); -- to print the 1st vertical bar in the 2nd front minar print_space(p_space_btn_minars); single_special(1); special_char_verti(p_space_btn_front_dome/3); dbms_output.new_line; END; /* ###################### end of Procedure to print the first vertical line in front minars #################*/ /* ################# Procedure to print the top poles of hte front minars ######################## */ PROCEDURE top_pole_frnt_minars(p_front_space NUMBER,p_space_btn_front_dome NUMBER,p_space_btn_minars NUMBER, len_of_pillar NUMBER) IS BEGIN FOR pillar_len in 1 .. len_of_pillar LOOP -- print the front space, before printing the minar print_space(p_front_space); two_star_and_1space(p_space_btn_front_dome); -- print the middle space, before printing the 2nd minar print_space(p_space_btn_minars); two_star_and_1space(p_space_btn_front_dome);
dbms_output.new_line; END LOOP; END; /* ################# END OF Procedure to print the top poles of hte front minars ######################## */ /* ################Procedure to print the second horizontal line in the front minars ###################### */ PROCEDURE second_hori_frnt_minar IS snd_vert_frnt_space NUMBER := given_front_space ; verti_lent NUMBER := space_btn_front_dome1; snd_verti_btn_minar NUMBER := given_space_btn_minars ; BEGIN -- prints the vertical line in the first minar print_space(snd_vert_frnt_space - 2); single_special(verti_lent+ 7); -- prints the vertical line in the second minar print_space(snd_verti_btn_minar - 4); single_special(verti_lent+ 7); DBMS_OUTPUT.NEW_LINE; END; /* ################END OF Procedure to print the second vertical line in the front minars ###################### */
/* ############### PROCEDURE to print the bottom part of front minar, with behind minars ################### */ PROCEDURE front_down_hind_top IS fbhu_front_space NUMBER := given_front_space; fbhu_dome_space NUMBER := space_btn_front_dome1; fbhu_middle_Sminar NUMBER := given_space_btn_minars/2; fbhu_Sminar_frontSpace NUMBER := given_space_btn_minars/4 ; fbhu_Sminar_backSpace NUMBER := given_space_btn_minars/4 - 4; -- -4 for cosmetic purpose fbhu_space_btn_Sminar NUMBER := 4;
-- print the first BIG minar PROCEDURE top4_big_minar1 IS BEGIN print_space(fbhu_front_space); -- front space of the the bottom minar two_star_and_1space(fbhu_dome_space); -- prints the stars with the dome space in btn END; -- print the last BIG minar PROCEDURE top4_big_minar2 IS BEGIN print_space( fbhu_Sminar_backSpace - 3); -- front space of the the bottom minar,-3 for cosmetic purpose two_star_and_1space(fbhu_dome_space); -- prints the stars with the dome space in btn END;
-- prints the 1st small minar PROCEDURE top4_small_minar1 IS BEGIN print_space(fbhu_Sminar_frontSpace -2); two_star_and_1space(fbhu_space_btn_Sminar); END; -- prints the 2nd small minar PROCEDURE top4_small_minar2 IS BEGIN print_space(fbhu_middle_Sminar - 4); two_star_and_1space(fbhu_space_btn_Sminar); END;
PROCEDURE build_verti_4pillars IS
BEGIN -- BUILD THE PILLARS OF ALL THE 4 MINARS FOR top_four_minars in 1 .. 2 LOOP top4_big_minar1; top4_small_minar1; top4_small_minar2; top4_big_minar2; DBMS_OUTPUT.NEW_LINE; END LOOP; END;
BEGIN top4_big_minar1; -- prints the first big minar -- prints the first SMALL minar pine print_space(fbhu_Sminar_frontSpace); DBMS_OUTPUT.PUT('^'); -- prints the second SMALL minar pine print_space(fbhu_middle_Sminar); DBMS_OUTPUT.PUT('^'); -- print the last BIG minar print_space(fbhu_Sminar_backSpace); -- front space of the the bottom minar two_star_and_1space(fbhu_dome_space); -- prints the stars with the dome space in btn -pritn the last big minar DBMS_OUTPUT.NEW_LINE; -- BUILD THE PILLARS OF ALL THE 4 MINARS build_verti_4pillars;
-- BUILD HIND MINAR VERTICAL DESIGN WITH TILDA top4_big_minar1; -- prints the first print_space(fbhu_Sminar_frontSpace -2); single_tilda(3); -- prints the vertical line in the first small minar print_space(fbhu_middle_Sminar - 4); single_tilda(3); -- prints the vetical line in the second small minar -- print the last BIG minar print_space( fbhu_Sminar_backSpace - 4); -- front space of the the bottom minar,-3 for cosmetic purpose two_star_and_1space(fbhu_dome_space); -- prints the stars with the dome space in btn dbms_output.new_line; -- Prints the bottom of the build_verti_4pillars; -- BUILD THE LAST HORIZONTAL LINE OF THE MINARS -- 1 big pillar hash print_space(fbhu_front_space-1); -- front space of the the bottom minar single_hash(7); -- 1 small pillar hash print_space(fbhu_Sminar_frontSpace - 4); single_hash(3); -- 2 small pillar hash print_space(fbhu_middle_Sminar - 4); single_hash(3); -- 2 big pillar hash print_space(fbhu_Sminar_backSpace - 4); -- front space of the the bottom minar single_hash(7); dbms_output.new_line;
END; /* ############### END OF PROCEDURE to print the bottom part of front minar, with behind minars ################### */
/* ################ PROCEDURE to print the top desing of the building ####################################### */ PROCEDURE curve_top_building IS BEGIN -- top CURVE desing of the building print_space(given_front_space); single_tilda(72); dbms_output.new_line; END; /* ################ end of PROCEDURE to print the top desing of the building ####################################### */
/* ################ Procedure to print the top most desing after the curve #################################*/ PROCEDURE top_building_design IS BEGIN FOR top_desing_loop in 1 .. 4 LOOP print_space(given_front_space); single_percent(63); dbms_output.new_line; END LOOP; END; /* ################ END OF Procedure to print the top most desing after the curve ############################*/
/* ############### Procedure to print the bottom pillar in the building ############################## */ PROCEDURE middle_building_design IS mid_build_toggle NUMBER; mid_build_sp2 NUMBER := 14; -- total_middle ie 150/2 = around 72/4 - 4 for !!! print_clock VARCHAR2(1) := 'Y'; PROCEDURE linePillar_space IS BEGIN -- prints the first | lines in the middle building design print_space(given_front_space); single_line(space_btn_front_dome1 * 2); --print the middle space between the two | design pillars in the building print_space(given_space_btn_minars); single_line(space_btn_front_dome1 * 2); dbms_output.new_line; END;
PROCEDURE clock_window IS BEGIN -- prints the first | lines in the middle building design print_space(given_front_space); single_line(space_btn_front_dome1 * 2); -- print the first top part of the window FOR top_window in 1 .. 3 LOOP print_space(mid_build_sp2); single_special(4); END LOOP; -- print the clock IF print_clock = 'Y' THEN print_space(mid_build_sp2); DBMS_OUTPUT.PUT('@');
mid_build_toggle := mid_build_sp2 ; ELSIF print_clock = 'N' THEN mid_build_toggle := (mid_build_sp2 * 2) + 4; -- *2 coz, the space before and after clock along with the 3 space occupied by the -- the clock, this is when the clock is not printed END IF; -- this prints the clock or no clock space print_space(mid_build_toggle); single_special(4);
-- print the second top part of the window FOR top_window in 1 .. 2 LOOP print_space(mid_build_sp2); single_special(4); END LOOP; -- print the second | line in the middle building design print_space(mid_build_sp2 - 3); -- -3 for cosmetic purpose single_line(space_btn_front_dome1 * 2); dbms_output.new_line; END; BEGIN linePillar_space; -- prints the middle part of the building with lines and spaces -- PRINTS THE MIDDLE DESIGN WITH THE WINDOWS AND THE CENTER CLOCK clock_window; print_clock := 'N'; clock_window;
END;
/* ############### end of Procedure to print the bottom pillar in the building ###################### */
/* ################ Procedure to print the 2nd middle part of the building ###########################*/ PROCEDURE mid_in_minar IS BEGIN FOR middle_space in 1 .. 3 LOOP -- prints the 1st pine in the front two pines print_space(given_front_space); two_star_and_1space(space_btn_front_dome1); -- prints the 2nd pine in the front two pines print_space(given_space_btn_minars + 2); two_star_and_1space(space_btn_front_dome2); dbms_output.new_line; END LOOP; END; /* ################ end of Procedure to print the 2nd middle part of the building ###########################*/
/* ########### Procedure to print the bottom of the building with the door ####################### */ PROCEDURE bottom_door IS space_before_door NUMBER := (given_space_btn_minars/2); space_after_door NUMBER:= given_space_btn_minars - space_before_door; door_middle_space NUMBER :=0; door_top VARCHAR2(1) := 'Y'; len_of_side_doors NUMBER := 5;
PROCEDURE enterence_door IS BEGIN FOR door_bend in 1 .. len_of_side_doors LOOP IF door_top = 'Y' THEN space_before_door := space_before_door - 7; door_middle_space := door_middle_space + 7 + 7 + 1; space_after_door := space_after_door - 8.1; END IF; -- prints the first bottom minar print_space(given_front_space); two_star_and_1space(space_btn_front_dome1); -- prints the left side of the door print_space(space_before_door); single_star(1); -- print the right side of the door print_space(door_middle_space); single_star(1); -- print the last bottom minar print_space(space_after_door); two_star_and_1space(space_btn_front_dome1); dbms_output.new_line; END LOOP; END;
-- print the starting of the door print_space(space_before_door); single_star(1); -- print the second bottom minar print_space(space_after_door); two_star_and_1space(space_btn_front_dome1); dbms_output.new_line; enterence_door; -- to print the top part of the door door_top := 'N'; -- this is stop reducin the space values in front and behind the door len_of_side_doors := 11; -- inc's the length of the door after the bend space_before_door := space_before_door - 2; door_middle_space := door_middle_space + 4; space_after_door := space_after_door - 2; enterence_door;
END; /* ########### end of Procedure to print the bottom of the building with the door ####################### */
BEGIN -- get the cursor down by some lines print_blank_lines(5); -- Two pines of the front 2 minars front_pines; front_domes; first_hori_frnt_minar(given_front_space,space_btn_front_dome1,given_space_btn_minar s-1); -- -1 just for cosmetic purpose
top_pole_frnt_minars(given_front_space,space_btn_front_dome1,given_space_btn_mina rs, 3); second_hori_frnt_minar; front_down_hind_top; -- building design top_building_design; middle_building_design; curve_top_building; mid_in_minar; bottom_door; -- curve_top_building; END; Posted by And so It Begins at 7:38 PM 0 comments
left_pyramid_shade_count NUMBER :=0; middle_pyramid_shade_count NUMBER:= 0; right_pyramid_shade_count NUMBER:= 0; lines_printed_count NUMBER := 0; new_line_flag VARCHAR2(3) := 'YES'; check_which_building NUMBER; amt_of_space_interms_line NUMBER; middle_space NUMBER := 15; -- this is to keep the initial space between the two horizontal lines to be atleast 3 spaces print_middle_space NUMBER; noof_lines_occupied_in_1_space NUMBER := 1.5; -- no of lines occupied in one space increment_space_by NUMBER := 2; -- space should be incremented inbetween the lines to make it look like a moon space_occupied_in_middle NUMBER; noof_pics_left_side NUMBER; noof_pics_right_side NUMBER; building_1_width NUMBER; building_2_width NUMBER; building_3_width NUMBER; building_4_width NUMBER; building_5_width NUMBER; building_6_width NUMBER;
---- #### Procedur to print the shaded part in the background #### ---PROCEDURE print_shade(para_width NUMBER, next_line NUMBER) IS BEGIN FOR lines_printed IN 1 .. next_line LOOP FOR width_of_shade in 1 .. para_width
LOOP DBMS_OUTPUT.PUT('|'); END LOOP; IF new_line_flag = 'YES' THEN dbms_output.new_line; ELSIF new_line_flag = 'NO' THEN NULL; END IF; END LOOP; END;
---- #### END OF Procedur to print the shaded part in the background #### ----
----#### Procedure to print empty spaces #### ---PROCEDURE print_empty_space(width_of_space NUMBER) IS BEGIN FOR for_empty_space in 1.. width_of_space LOOP DBMS_OUTPUT.PUT(' '); END LOOP; END; ---- ####END OF procedure to print empty spaces #### ----
---- #### Procedure to calculate the left right shaded amount #### ---PROCEDURE calc_left_right_shade IS BEGIN amt_of_space_interms_line := (middle_pyramid_shade_count * 1.5); --taking 1 spaces occupies around 1.5 times the line left_pyramid_shade_count := CEIL((total_pyramid_width -
middle_pyramid_shade_count)/2); right_pyramid_shade_count := (total_pyramid_width - left_pyramid_shade_count) amt_of_space_interms_line; -- space occupies more --area when commpared to line so remove the extra lines that we calculted --taking 1.5 as a standard END; ---- #### END OF Procedure to calculate the left right shaded amount #### ----
---- #### Procedure to print buildings #### ---PROCEDURE print_buildings IS BEGIN IF check_which_building = 1 THEN middle_pyramid_shade_count := building_1_width; calc_left_right_shade; ELSIF check_which_building = 2 THEN middle_pyramid_shade_count := building_1_width + building_2_width; calc_left_right_shade; ELSIF check_which_building = 3 THEN middle_pyramid_shade_count := building_1_width + building_2_width + building_3_width; calc_left_right_shade; ELSIF check_which_building = 4 THEN middle_pyramid_shade_count := building_1_width + building_2_width + building_3_width + building_4_width; calc_left_right_shade; ELSIF check_which_building = 5 THEN middle_pyramid_shade_count := building_1_width + building_2_width + building_3_width + building_4_width + building_5_width; calc_left_right_shade; ELSIF check_which_building = 6
THEN middle_pyramid_shade_count := building_1_width + building_2_width + building_3_width + building_4_width + building_5_width + building_6_width; calc_left_right_shade; END IF; END; ---- #### END OF Procedure to print buildings #### ----
---- #### Procedure to Calculate the Left, Right , and Middle space #### ---PROCEDURE calc_lft_rt_middl(para_middle_space NUMBER) IS BEGIN space_occupied_in_middle := CEIL(middle_space * noof_lines_occupied_in_1_space); noof_pics_left_side := FLOOR((100 - (space_occupied_in_middle))/2); noof_pics_right_side := (100 - (noof_pics_left_side + space_occupied_in_middle) ); print_middle_space := middle_space; new_line_flag := 'NO'; print_shade(noof_pics_left_side,1); -- printing the line on the left side print_empty_space(print_middle_space); -- printing the space in between print_shade(noof_pics_right_side,1); -- printing the line of the right side DBMS_OUTPUT.NEW_LINE; END; ---- #### END OF Procedure to Calculate the Left, Right , and Middle space #### ----
---- #### Proceudre to print the moon on top of the building #### ----
PROCEDURE print_moon IS BEGIN -- top half of the circle FOR noof_line_with_space in 1 .. 2 LOOP calc_lft_rt_middl(middle_space); middle_space := middle_space + increment_space_by ; END LOOP; -- bottom half of the circle FOR bottom_half_circle in 1 .. 2 LOOP middle_space := middle_space - increment_space_by ; calc_lft_rt_middl(middle_space); END LOOP; new_line_flag := 'YES'; print_shade(100,2); -- prints the top part of the shade END; ---- #### END OF Proceudre to print the moon on top of the building #### ----
print_shade(100,5); -- prints the top part of the shade print_moon; -- calls the procedure to print the moon on top --print_shade(100,5); -- prints the top part of the shade FOR building_line_printed in 5 .. 50 -- lines printed is taken from 5 coz, 5 lines have already been printed in the print_shade LOOP IF building_line_printed BETWEEN 5 AND 9 THEN check_which_building := 1; ELSIF building_line_printed BETWEEN 10 AND 14 THEN check_which_building := 2; ELSIF building_line_printed BETWEEN 15 AND 19 THEN check_which_building := 3; ELSIF building_line_printed BETWEEN 20 AND 24 THEN check_which_building := 4; ELSIF building_line_printed BETWEEN 25 AND 29 THEN check_which_building := 5; ELSIF building_line_printed BETWEEN 30 AND 50 THEN check_which_building := 6; END IF; print_buildings; new_line_flag := 'NO'; print_shade(left_pyramid_shade_count,1);
new_line_flag := 'YES'; print_shade(right_pyramid_shade_count,1); END LOOP; END; Posted by And so It Begins at 7:37 PM 0 comments
DECLARE /*********************************************************************** ******************************************/ /*-------------------------------------- BUILD CASTLE -----------------------------------------------------------*/ PROCEDURE build_castle(infront_space NUMBER, len_of_castle NUMBER) IS
----------- ^^^^^^^^^^ DECLARATIONS for FLAG ^^^^^^^^^ --------------space_infront_of_flag NUMBER := infront_space; -- space infront of flag breadth_of_flag NUMBER := FLOOR(len_of_castle/5); mid_len_flag_no_verti_lines NUMBER := (breadth_of_flag - 4); space_btn_flag_hori_lines NUMBER := (breadth_of_flag + (breadth_of_flag - 1))-2; -- (breadth_of_flag - 1) coz, count the star with space, except the last star whose blank space is outside the rite verti line -- substract 2 from the total coz, we shouldnt consider the two verti lines in the flag rod_len_in_flag NUMBER := (mid_len_flag_no_verti_lines + 2); -- keeping the len of flag same as the len of the rod of the flag -- add 2 here coz,two verti lines in flag are missing in the mid_len_of_flag next_line VARCHAR2(2) := 'F'; ---------- vvvvvvvvvvv END OF DECLARATIONS for FLAG vvvvvvvv ------------
----------- ^^^^^^^^^^ DECLARATIONS for Triangle ^^^^^^^^^ ---------------- keeping the first triangle the same length as the breath of the flag mid_len_of_1st_middle_triangle NUMBER := (breadth_of_flag - 2); -- substracting the hori line in the triangel and the tip of the triangle first_center_space_in_triangel NUMBER := 1; space_infront_tip_of_triangle NUMBER := infront_space;
------- ^^^^^^^^^^ Declaration for tall building ^^^^^^^ -------------------top_castle_len NUMBER := (mid_len_flag_no_verti_lines +2) + rod_len_in_flag + (mid_len_of_1st_middle_triangle +2); -- calculates the length of the top part of the castle which includes -- the length of the flag with pole/rod and the length of the triangle tot_len_of_tall_building NUMBER := (len_of_castle - top_castle_len)-1; -- gives the len of the tallest building -- substract 1 coz, we are taking out the last base line in the castle individual_top_len_each_castle NUMBER := FLOOR(tot_len_of_tall_building/3); front_space_in_middle_castle NUMBER; middle_space_in_middle_castle NUMBER; -------- vvvvvvvvv END OF Declaration for tall building vvvvv ---------------
------------^^^^^^^^^^^^^^^^^ Declaration for the 2nd middle building ^^^^^^^^^ -------middle_space_2nd_building NUMBER; front_space_in_2nd_building NUMBER; middle_hori_line NUMBER; middle_space_in_small_tri NUMBER :=4; tot_middle_hori_space NUMBER; space_infront_smal_tri NUMBER; ----------- vvvvvvvvvvvvvvvv END OF Declaration for the 2nd middle building vvvvv --------
------------ ^^^^^^^^^^^ Declaration for the last building ^^^^^^^^^^ -------------no_of_stars_last_building NUMBER; middle_space_in_last_building NUMBER; spce_btn_hori_line_last_build NUMBER; spce_before_last_building NUMBER; door_space_bottom_middle NUMBER;
--------------- vvvvvvvvvvvv END OF Declaration for the last building vvvvvvvvvvv --------
------ ^^^^^^^^^^ Remainig Declarations ^^^^^^^^ ----------------top_of_the_door NUMBER; after_top_door VARCHAR2(2):= 'F'; upper_midle_verti_line NUMBER; lower_verti_line NUMBER; base_of_the_castle NUMBER; no_of_base_stars NUMBER; --------vvvvvvvv END OF Remaining Declarations vvvvvv ------------
---- #### Procedure to print space in castle #### ---PROCEDURE print_spaces(para_len_of_space NUMBER) IS BEGIN FOR for_len_of_space IN 1 .. para_len_of_space LOOP dbms_output.put(' '); END LOOP; END; ---- #### END OF Procedure to print space in castle #### ----
---- #### Procedure to print a space and a star #### ---PROCEDURE print_space_n_star(para_space_infront_of_star NUMBER) IS BEGIN print_spaces(para_space_infront_of_star ); dbms_output.put('*'); END; ---- #### END OF Procedure to print a space and a star #### ----
---- #### Procedure to print stars in a line #### ---PROCEDURE print_hori_stars_no_space(para_no_of_stars NUMBER, para_space_before_star NUMBER) IS BEGIN print_spaces(para_space_before_star); FOR for_no_of_stars IN 1 .. para_no_of_stars LOOP dbms_output.put('*'); END LOOP; END; ---- #### END OF Procedure to print stars in a line #### ----
---- #### Procedure to print a single vertical line #### ---PROCEDURE print_single_verti_line(para_no_of_verti_stars NUMBER, para_space_infront_of_rod NUMBER) IS BEGIN FOR for_print_single_vertei IN 1 .. para_no_of_verti_stars LOOP print_spaces(para_space_infront_of_rod); dbms_output.put('*'); IF next_line = 'T' THEN dbms_output.new_line; END IF; END LOOP; END; ---- #### Procedure to print a single vertical line #### ----
---- #### Procedure to print stars in horizontal line along with spaces #### ---PROCEDURE print_hori_stars_wit_space(para_no_of_verti_stars NUMBER,
para_space_infront NUMBER) IS BEGIN print_spaces(para_space_infront); -- prints the space infront of the hori line FOR for_len_of_hori_line IN 1 .. para_no_of_verti_stars LOOP dbms_output.put('*'); dbms_output.put(' '); END LOOP; END; ---- #### END OF Procedure to print stars in horizontal line along with spaces #### ----
---- #### Procedure to print two vertical line the Castle #### ---PROCEDURE print_two_verti_line_spaces(para_no_of_hori_stars NUMBER, para_space_btn_lines NUMBER, space_infront_verti_line NUMBER) IS BEGIN FOR for_2_verti_line IN 1 .. para_no_of_hori_stars LOOP print_spaces(space_infront_verti_line); dbms_output.put('*'); -- prints the first star in the left verti side of the two lines print_spaces(para_space_btn_lines); -- prints the space btn the two lines dbms_output.put('*'); -- prints the last star in the right verti side of the two lines IF go_new_line = 'T' THEN dbms_output.new_line; END IF; END LOOP; END; ---- #### END OF Procedure to print two vertical line the Castle #### ----
---- #### Procedure to print a triangle on the castle #### ---PROCEDURE print_triangle(para_mid_len_of_triangle NUMBER, para_space_infront_triangel NUMBER ) IS changing_tri_infront_space NUMBER := para_space_infront_triangel; base_stars_in_triangle NUMBER; BEGIN print_spaces(para_space_infront_triangel); dbms_output.put_line('*'); FOR for_no_of_middle_part IN 1 .. para_mid_len_of_triangle LOOP changing_tri_infront_space := changing_tri_infront_space - 1; -- dec the space infront of the triangle print_spaces(changing_tri_infront_space); dbms_output.put('*'); print_spaces(first_center_space_in_triangel); -- prints the center space in the triangle dbms_output.put('*'); dbms_output.new_line; first_center_space_in_triangel := first_center_space_in_triangel + 2; -- inc the center space in the triangle END LOOP; base_stars_in_triangle := CEIL(first_center_space_in_triangel/2); print_hori_stars_wit_space((base_stars_in_triangle+1),changing_tri_infront_space - 1); dbms_output.new_line; front_space_in_middle_castle := changing_tri_infront_space - 1; middle_space_in_middle_castle := ((base_stars_in_triangle + 1) + (base_stars_in_triangle))- 2; -- here wer are adding the stars along with the spaces so add base_stars + one less space than the tot stars, as the last space will be printed outside the range -- substract 2, coz removing the two vertical lines in building, we need only the spaces without the vertical lines END; ---- #### END OF Procedure to print a triangle on the castle #### ----
------ #### Procedure to print the tallesst middle building in the castle #### ---PROCEDURE print_tallest_middle_building(para_top_len_of_middle NUMBER) IS BEGIN print_two_verti_line_spaces(para_top_len_of_middle,middle_space_in_middle_castle,fro nt_space_in_middle_castle); middle_space_2nd_building := middle_space_in_middle_castle; END; ------ #### END OF Procedure to print the tallesst middle building in the castle #### ----
---- #### Procedure to print the small triangles on the small buildings #### ---PROCEDURE print_small_triangle(para_middle_2nd_building NUMBER, para_front_middle_castle NUMBER) IS small_tri_middle_space NUMBER := para_middle_2nd_building; right_of_small_triangle NUMBER := CEIL(small_tri_middle_space/2); small_tri_front_space NUMBER := (para_front_middle_castle right_of_small_triangle)-1 ; -- subtract 1,coz we shouldnt consider the space where the top star of the 2nd triangle occupies BEGIN print_spaces(small_tri_front_space); dbms_output.put('*'); go_new_line := 'F'; print_two_verti_line_spaces(1,middle_space_in_middle_castle,right_of_small_triangle); print_spaces(right_of_small_triangle); dbms_output.put('*');
dbms_output.new_line; front_space_in_2nd_building := small_tri_front_space; END; ---- #### END OF Procedure to print the small triangles on the small buildings #### ----
---- #### Procedure to print the second line in the small triangle #### ---PROCEDURE secnd_line_triangle(para_times NUMBER) IS BEGIN FOR secnd_line_triange IN 1 .. para_times LOOP go_new_line := 'F'; print_two_verti_line_spaces(1,middle_space_in_small_tri,(front_space_in_2nd_building -2)); print_two_verti_line_spaces(1,middle_space_in_middle_castle,1); print_two_verti_line_spaces(1,middle_space_in_small_tri,1); dbms_output.new_line; END LOOP; END; ---- #### END OF Procedure to print the second line in the small triangle #### ----
---- #### Procedure to print huge spaces infront of a single star #### ---PROCEDURE print_huge_space_n_star(para_huge_space NUMBER) IS BEGIN print_spaces(para_huge_space); dbms_output.put('*'); END;
---- #### END OF Procedure to print huge spaces infront of a single star #### ----
BEGIN ---- @@@@ Prints the flag on the top of the castle @@@@ ---print_hori_stars_wit_space( breadth_of_flag, space_infront_of_flag); -- this is to print the first hori line in the flag with stars and spaces dbms_output.new_line; -- to get the control to the next line after drawing the first hori line in the flag print_two_verti_line_spaces(mid_len_flag_no_verti_lines, space_btn_flag_hori_lines, space_infront_of_flag); -- prints the middle part of the flag, which has two hori lines and spaces in btn print_hori_stars_wit_space( breadth_of_flag, space_infront_of_flag); dbms_output.new_line; -- to get the control to the next line after drawing the first hori line in the flag next_line := 'T'; print_single_verti_line(rod_len_in_flag,space_infront_of_flag); ---- @@@@ END OF Prints the flag on the top of the castle @@@@ ---next_line := 'F';
---- @@@@ Print the triangle in the castle @@@@ ---print_triangle(mid_len_of_1st_middle_triangle, space_infront_tip_of_triangle); ---- @@@@ END OF Print the triangle in the castle @@@@ ----
---- @@@@ Print the top part of tallest middle castle building @@@@ ---print_tallest_middle_building(individual_top_len_each_castle-1); -- subtract 1, coz remvoing the base line in the upper part of the castle ---- @@@@ END OF Print the top part of tallest middle castle building @@@@ ----
---- @@@@ Print small triangle @@@@ ---print_small_triangle( middle_space_2nd_building,front_space_in_middle_castle) ; secnd_line_triangle(1) ; ---- @@@@ Print small triangle @@@@ ----
tot_middle_hori_space := (middle_space_in_small_tri + middle_space_in_middle_castle+ middle_space_in_small_tri)+ 6 + 2; -- this add the middle spaces in the two side 2nd buildings and the middle builiding -- along with the 6 vertical lines and 2 spaces btn the side building and the center building middle_hori_line := CEIL(tot_middle_hori_space/2)+1; space_infront_smal_tri := front_space_in_middle_castle (middle_space_in_small_tri+3); print_hori_stars_wit_space(middle_hori_line,space_infront_smal_tri); -- subtracting the space occupied by the 2nd building from -- the total left space from the center of the middle building dbms_output.new_line;
---- @@@@ Print the upper middle veretical lines upper_midle_verti_line := FLOOR(tot_len_of_tall_building/3)-2; FOR for_upper_middle_veret IN 1 .. upper_midle_verti_line LOOP print_two_verti_line_spaces(1, middle_space_2nd_building ,space_infront_smal_tri); print_two_verti_line_spaces(1, middle_space_2nd_building ,middle_space_in_middle_castle); dbms_output.new_line; END LOOP;
---- @@@@ Print the two hori lines for the bottom building of the castle middle_space_in_last_building := middle_space_2nd_building; spce_before_last_building := (space_infront_smal_tri - middle_space_in_last_building)1; -- calc front space of the last building, by subtracting the front space of the
-- middle space from last building from the front space of 2nd building -- and then 1 ie the vertical line of the 2nd building no_of_stars_last_building := FLOOR(middle_space_in_last_building/2)+2; -- half of the center space and add 2 -- for the corner stars on the two verti lines print_hori_stars_wit_space(no_of_stars_last_building,spce_before_last_building ); print_hori_stars_wit_space(1,(middle_space_2nd_building-1)); print_hori_stars_wit_space(1,(middle_space_in_middle_castle-1)); print_hori_stars_wit_space(no_of_stars_last_building,(middle_space_2nd_building-1)); dbms_output.new_line;
---- @@@@ Print the lower vertical lines lower_verti_line := ((tot_len_of_tall_building-2) - upper_midle_verti_line); FOR for_lower_part_castle IN 1 .. lower_verti_line LOOP print_two_verti_line_spaces(1, middle_space_in_last_building ,spce_before_last_building); -- prints the the vertical line of the last building in the lower part of castle IF(for_lower_part_castle = 6) THEN door_space_bottom_middle := FLOOR(middle_space_in_middle_castle/3); top_of_the_door := (middle_space_in_middle_castle - (door_space_bottom_middle *2)); print_single_verti_line(1,middle_space_2nd_building); -- prints the right side wall of the 2nd building print_hori_stars_no_space(top_of_the_door,door_space_bottom_middle); -- prints the top of hte door print_two_verti_line_spaces(1,middle_space_2nd_building,door_space_bottom_middle); -- prints the left and right side walls of the right 2nd building print_single_verti_line(1,middle_space_in_last_building); -- prints the right side wall of the last building after_top_door := 'T'; ELSE -- this has to be executed after the top of the door is printed in the bottom half of the castle IF after_top_door = 'T' THEN
print_two_verti_line_spaces(1,door_space_bottom_middle,middle_space_2nd_building); print_two_verti_line_spaces(1,door_space_bottom_middle,(top_of_the_door-2)); print_two_verti_line_spaces(1,middle_space_in_last_building,middle_space_2nd_buildin g); -- this is executed before the the top of the door is printed in the top half of the castle ELSIF after_top_door = 'F' THEN print_two_verti_line_spaces(1,middle_space_in_middle_castle,middle_space_2nd_buildi ng); print_two_verti_line_spaces(1,middle_space_in_last_building,middle_space_2nd_buildin g); END IF; END IF; dbms_output.new_line; END LOOP; --- base of the castle base_of_the_castle := (middle_space_in_last_building *2) + (middle_space_2nd_building *2) + middle_space_in_middle_castle +4; -- total + 4 coz, counting the vertical lines with the spaces in between no_of_base_stars := FLOOR(base_of_the_castle/2) +2; -- + 2 for the vertical lines in the begining and the end of the base line print_hori_stars_wit_space(no_of_base_stars,spce_before_last_building); dbms_output.new_line; END;
Draw a CAR using Oracle PL/SQL DECLARE len_of_car_top NUMBER := 20; -- taking length of car top as a constant value space_infront_of_car NUMBER := len_of_car_top * 3; -- Multiply by 3 to make enought space for the front of the car space_btn_frnt_back_glass NUMBER := len_of_car_top + 25; -- This is the space between the front and back glass equating to -- the len of the top of car,coz inc the space_infront_engine NUMBER; last_middle_space NUMBER; print_space VARCHAR2(1) := 'Y'; tot_car_width NUMBER; engine_line NUMBER; bumper_line NUMBER; tire_size1 NUMBER := 15; tire_size2 NUMBER := 15; tire_size3 NUMBER := 15;
---- #### Procedure to print empty space in the front before printing something #### ----
PROCEDURE print_empty_hori_space(para_len_of_empty_line NUMBER) IS BEGIN FOR empty_line_len in 1 .. para_len_of_empty_line LOOP DBMS_OUTPUT.PUT(' '); END LOOP; END; ----#### END of procedure to print empty space in the front before printing something #### ----
-- #### PROCEDURE to print a horizontal line of stars #### ---PROCEDURE print_hori_line(para_len_of_line NUMBER) IS BEGIN IF print_space = 'Y' THEN print_empty_hori_space(space_infront_of_car); -- multily by 3 to make enough space for the front engine END IF; FOR for_line_len in 1 .. para_len_of_line LOOP DBMS_OUTPUT.PUT('+'); END LOOP; END; ---- #### end of Procedure to print a horizontal line of stars #### ----
---- #### Procedure to print empty lines for the picture to move down #### ---PROCEDURE print_empty_lines(para_noof_empty_lines NUMBER) IS BEGIN FOR space_above in 1 .. para_noof_empty_lines LOOP dbms_output.new_line; END LOOP; END; ----#### End of Procedur to print empty line for the picture to move down #### ----
---- #### Procedrue to print slant lines of the car front and rear glass #### ---PROCEDURE print_frnt_rear_glasses(para_len_of_glass NUMBER) IS BEGIN FOR print_middle_space in 1 .. para_len_of_glass LOOP space_infront_of_car := space_infront_of_car - 4; -- this will reduce the space infront of the car to get a print_empty_hori_space(space_infront_of_car); --slant appears for the front glass of the car DBMS_OUTPUT.PUT('+'); print_empty_hori_space(space_btn_frnt_back_glass); DBMS_OUTPUT.PUT('+'); DBMS_OUTPUT.NEW_LINE; space_btn_frnt_back_glass := space_btn_frnt_back_glass + 6; END LOOP; space_infront_engine := space_infront_of_car; last_middle_space := space_btn_frnt_back_glass; --DBMS_OUTPUT.PUT_LINE(SPACE_INFRONT_ENGINE); --DBMS_OUTPUT.PUT_LINE(LAST_MIDDLE_SPACE); END;
---- ####END OF procedure to print slant lines of the care for front and rear glass #### ----
---- ####Procedure to print bumper and engine of the car #### ---PROCEDURE print_engine_n_bumper --(para_len_of_engineNbumper NUMBER) IS BEGIN engine_line := space_infront_of_car - 37; print_space := 'N'; print_empty_hori_space(25); print_hori_line(engine_line); print_empty_hori_space(LAST_MIDDLE_SPACE); print_hori_line(engine_line ); DBMS_OUTPUT.NEW_LINE; END; ---- ####END OF Procedure to print bumper and engine of the car #### ----
----#### Procedure to print the front and rear vertical lines in the car #### ---PROCEDURE frnt_rear_verti_lines IS BEGIN FOR len_of_front_verti_lines in 1 .. 3 LOOP print_empty_hori_space(25); DBMS_OUTPUT.PUT('*'); /* --delete
print_empty_hori_space(60); dbms_output.put('+'); print_empty_hori_space(7); dbms_output.put('+'); -- delete*/ tot_car_width := LAST_MIDDLE_SPACE - 10 ; print_empty_hori_space(engine_line + LAST_MIDDLE_SPACE + engine_line + 19); DBMS_OUTPUT.PUT('+'); DBMS_OUTPUT.NEW_LINE; END LOOP; END; ----#### END OF Procedure to print the front and rear vertical lines in the car #### ----
---- #### Procedure to print the bottom part of the car #### ---PROCEDURE bottome_of_car IS BEGIN print_empty_hori_space(25); print_hori_line(tot_car_width); DBMS_OUTPUT.NEW_LINE; END; ---- #### Procedure to print the bottom part of the car #### ----
---- #### Procedrue to print wheels of the car #### ---PROCEDURE wheels_of_car IS BEGIN FOR tire in 1 .. 2 LOOP
print_empty_hori_space(35); Print_empty_hori_space(tire_size3); DBMS_OUTPUT.PUT('*'); print_empty_hori_space(tire_size2); dbms_output.put('*'); tire_size1 := tire_size1 + 3 ; tire_size2 := tire_size2 - 8; tire_size3 := tire_size3 + 9;
dbms_output.new_line; END LOOP; END; ---- #### Procedrue to print wheels of the car #### ----
BEGIN print_empty_lines(5); -- this will print 5 empty lines, this will make the picture to go down by 5 lines print_hori_line(len_of_car_top); -- this will print a horizontal line dbms_output.new_line; print_frnt_rear_glasses(3); print_engine_n_bumper; frnt_rear_verti_lines;
name1 VARCHAR2(5); name2 VARCHAR2(5); x NUMBER; BEGIN x := INSTR(n,'o',1,1); name1 := SUBSTR(n,1,(x-1)); name2 := SUBSTR(n,(x+1),LENGTH(n)); dbms_output.put_line( name1 || name2); END; BEGIN rem_o('snoopy'); END; 13)Check for palindrome DECLARE PROCEDURE chk_palin(n CHAR) IS len NUMBER; half_way NUMBER; char1 CHAR; char2 CHAR; chk NUMBER := 0; num NUMBER; tab NUMBER; BEGIN len := LENGTH(n); <> FOR i IN 1 .. (FLOOR(len/2)) LOOP char1 := SUBSTR(n,i,1); num := len - chk; char2 := SUBSTR(n,num,1); dbms_output.put_line(char1); dbms_output.put_line(char2); chk := chk +1; IF char1 = char2 THEN tab := 1; ELSIF char1 != char2 THEN tab := 0; EXIT for_loop; END IF;
END LOOP; IF tab = 1 THEN dbms_output.put_line('THIS IS A PALIDROME'); ELSE dbms_output.put_line('this is not a palindrome'); END IF; END; BEGIN chk_palin('abcdcba'); END; 14)Count number of characters DECLARE PROCEDURE check_char(name CHAR) IS extract_char CHAR; incr_count NUMBER :=1; no_of_char NUMBER :=0; BEGIN LOOP extract_char := SUBSTR(name,incr_count,1); IF extract_char IS NULL OR extract_char = '' THEN EXIT WHEN extract_char IS NULL; ELSE no_of_char := no_of_char +1; END IF; incr_count := incr_count +1; END LOOP; dbms_output.put_line('no of chars:' || no_of_char); END check_char; BEGIN check_char('abcd'); END; 15)Print reverse of name DECLARE PROCEDURE reverse_of_name(name CHAR) IS
extract_char CHAR; BEGIN FOR i IN REVERSE 1 .. LENGTH(name) LOOP extract_char := SUBSTR(name,i,1); dbms_output.put(extract_char); END LOOP; dbms_output.new_line; END; 16)Change some value in a word (from jk001 to jk0025) BEGIN reverse_of_name('snoopy'); END; BEGIN FOR i IN 1 .. 25 LOOP dbms_output.put_line('jk' ||'00' ||i); END LOOP; END; 17)Captalize alternate Characters (aBcDeFgHiJkLmNoPqR) DECLARE PROCEDURE sent_name(n VARCHAR2) IS extract_char VARCHAR2(10); chk NUMBER := 0; BEGIN FOR i IN 1 .. LENGTH(n) LOOP extract_char := SUBSTR(n,i,1); IF (i MOD 2) = 0 THEN -- dbms_output.put(extract_char || ' This is Even'); dbms_output.put(UPPER(extract_char)); NULL; ELSIF (i MOD 2) > 0 THEN --dbms_output.put_line(extract_char || 'this is odd'); dbms_output.put((extract_char)); NULL; END IF; chk := chk +1;
END LOOP; dbms_output.new_line; END sent_name; BEGIN sent_name('abcdefghijklmnopqr'); END; 18)Add Number in a word (a0b1c2d3) DECLARE PROCEDURE sent_data(name VARCHAR2) IS extract_data CHAR; BEGIN FOR i IN 1 .. LENGTH(name) LOOP extract_data := SUBSTR(name,i,1); dbms_output.put( extract_data || (i-1)); END LOOP; dbms_output.new_line; END; BEGIN sent_data('abcd'); END; 19)Captalize all the first characters in a Sentence DECLARE PROCEDURE capi_ini(n VARCHAR2) IS extract_str VARCHAR2(1); chk NUMBER := 0; BEGIN FOR i IN 1 .. LENGTH(n) LOOP extract_str := SUBSTR(n,i,1);
--dbms_output.put_line('chk : ' || chk); IF chk = 0 THEN dbms_output.put(UPPER(extract_str)); ELSIF chk = 1 THEN dbms_output.put(LOWER(extract_str)); END IF; IF extract_str = ' ' THEN chk := 0; ELSE chk := 1; END IF; END LOOP; dbms_output.new_line; END; BEGIN capi_ini('this IS a CHECK to SEE if every thing is working properly'); END; 20)tHIS iS tO cONVERT tEXT DECLARE ttext VARCHAR2(25) := 'this is to convert text'; len_of_text NUMBER; extract_text VARCHAR2(1); after_space VARCHAR2(1) := 'T'; change_text VARCHAR2(25); --yes_cap VARCHAR2(1) := 'T'; BEGIN len_of_text := LENGTH(ttext); FOR for_check IN 1 .. len_of_text LOOP extract_text := SUBSTR(ttext, for_check,1); IF extract_text = ' ' THEN change_text := change_text || extract_text; after_space := 'T';
ELSIF extract_text <> ' ' THEN IF after_space = 'T' THEN change_text := change_text || LOWER(extract_text); ELSIF after_space = 'F' THEN change_text := change_text || UPPER(extract_text); END IF; after_space := 'F'; END IF; END LOOP; dbms_output.put_line(change_text); END; Posted by And so It Begins at 7:04 PM 2 comments
DECLARE PROCEDURE check_even( numb1 NUMBER) IS BEGIN IF numb1 MOD 2 = 0 THEN dbms_output.put_line('this is an even number'); ELSE dbms_output.put_line('this is an odd number'); END IF; END; BEGIN check_even(24783957357925); END; 3)Print multiplication table DECLARE PROCEDURE multi_of_two( numb1 NUMBER) IS c NUMBER := numb1; BEGIN LOOP dbms_output.put_line (c); c:= c * 2; EXIT WHEN c > 50; END LOOP; END; BEGIN multi_of_two(2); END; 4)Count the no of o in a name DECLARE PROCEDURE count_a( name VARCHAR2)
IS COUNT1 NUMBER:=0; extract VARCHAR2(1); BEGIN FOR i IN 1 .. LENGTH(name) LOOP extract:= SUBSTR(name,i,1); IF extract = 'o' THEN COUNT1 := COUNT1 + 1; END IF; END LOOP; dbms_output.put_line(COUNT1); END; BEGIN count_a('snooooooooooooooooooopy'); END; 5)Count the number of characters and numbers in a given text DECLARE PROCEDURE cnt_char_numb(name VARCHAR2) IS extracted_letter VARCHAR2(1); cnt_numb NUMBER :=0; cnt_char NUMBER := 0;
BEGIN
FOR i IN 1 .. LENGTH(name)
LOOP extracted_letter := SUBSTR(name,i,1); IF TO_CHAR(extracted_letter) IN ('0','1','2','3','4','5','6','7','8','9')THEN cnt_numb := cnt_numb + 1; ELSE cnt_char := cnt_char + 1; END IF; END LOOP;
dbms_output.put_line('no of number : ' || cnt_numb); dbms_output.put_line('no of char : ' || cnt_char); END; BEGIN cnt_char_numb('snoopy123'); END; 6) * ** *** **** DECLARE PROCEDURE star(num NUMBER) IS chk NUMBER := 0; BEGIN LOOP chk := chk + 1; FOR i IN 1 .. chk LOOP
dbms_output.put('*'); END LOOP; dbms_output.new_line; EXIT WHEN chk > num; END LOOP; END; BEGIN star(3); END; 7)Sorting a given number DECLARE PROCEDURE sort_number(numb NUMBER) IS a NUMBER; b NUMBER; c NUMBER; numb1 NUMBER := numb; BEGIN FOR i IN 1 .. LENGTH(TO_CHAR(numb1)) LOOP IF c IS NOT NULL THEN numb1 := REPLACE(numb1,c); --dbms_output.put_line('AFTER REPLACE numb1: ' || numb1); END IF; a := SUBSTR(numb1,1,1); --dbms_output.put_line('value of a:' || a); FOR j IN 1 .. LENGTH(TO_CHAR(numb1)) LOOP b := SUBSTR(numb1,j,1); IF b < a THEN a := b; END IF; END LOOP; c := a; dbms_output.put_line(a); END LOOP; END;
BEGIN sort_number(9834567210); END; 8) **** *** ** * DECLARE PROCEDURE reverse_star(numb NUMBER) IS chk NUMBER := numb; BEGIN LOOP FOR i IN REVERSE 1 .. chk LOOP dbms_output.put('*'); END LOOP; chk := chk -1; dbms_output.new_line; EXIT WHEN chk < 1; END LOOP; END; BEGIN reverse_star(4); END; 9) ******** ****** **** ** * DECLARE PROCEDURE pyramid(n NUMBER) IS star VARCHAR2(1) := '*';
chk NUMBER := n; sp NUMBER := 0; BEGIN LOOP FOR i IN 1 .. chk LOOP dbms_output.put(star); END LOOP; sp := sp+ 1; dbms_output.new_line; IF chk > 1 THEN FOR j IN 1 .. sp LOOP dbms_output.put(' '); END LOOP; END IF; IF chk != 2 THEN chk := chk - 2; ELSIF chk = 2 THEN chk := 1; END IF; EXIT WHEN chk < 1; END LOOP; END; BEGIN pyramid(8); END; 10) * *** ***** ******* *********
chk NUMBER := 1; sp NUMBER := (n/2)+1; BEGIN LOOP FOR j IN REVERSE 1 .. sp LOOP dbms_output.put(' '); END LOOP; FOR i IN 1 .. chk LOOP dbms_output.put('*'); END LOOP; dbms_output.new_line; chk := chk +2; sp := sp - 1; EXIT WHEN chk > 10 ; END LOOP; END; BEGIN reverse_pyramid(10); END;
IF ... THEN ... ELSIF ... ELSE ... END IF; CASE ... WHEN ... THEN ... ELSE ... END CASE;
Iterative Statements:
LOOP ... END LOOP; WHILE ... LOOP ... END LOOP; FOR ... IN [REVERSE] ... LOOP ... END LOOP;
The PL/SQL language includes object oriented programming techniques such as encapsulation, function overloading, information hiding (all but inheritance). PL/SQL is commonly used to write data-centric programs to manipulate data in an Oracle database. Example PL/SQL blocks:
/* Remember to SET SERVEROUTPUT ON to see the output */ BEGIN DBMS_OUTPUT.PUT_LINE('Hello World'); END; / BEGIN -- A PL/SQL cursor FOR cursor1 IN (SELECT * FROM table1) -- This is an embedded SQL statement LOOP DBMS_OUTPUT.PUT_LINE('Column 1 = ' || cursor1.column1 || ', Column 2 = ' || cursor1.column2); END LOOP; END; /
SQL is executed one statement at a time. PL/SQL is executed as a block of code. SQL tells the database what to do (declarative), not how to do it. In contrast, PL/SQL tell the database how to do things (procedural).
SQL is used to code queries, DML and DDL statements. PL/SQL is used to code program blocks, triggers, functions, procedures and packages. You can embed SQL in a PL/SQL program, but you cannot embed PL/SQL within a SQL statement.
[edit] Should one use PL/SQL or Java to code procedures and triggers?
Both PL/SQL and Java can be used to create Oracle stored procedures and triggers. This often leads to questions like "Which of the two is the best?" and "Will Oracle ever desupport PL/SQL in favour of Java?". Many Oracle applications are based on PL/SQL and it would be difficult of Oracle to ever desupport PL/SQL. In fact, all indications are that PL/SQL still has a bright future ahead of it. Many enhancements are still being made to PL/SQL. For example, Oracle 9i supports native compilation of PL/SQL code to binaries. Not to mention the numerous PL/SQL enhancements made in Oracle 10g and 11g. PL/SQL and Java appeal to different people in different job roles. The following table briefly describes the similarities and difference between these two language environments: PL/SQL:
Can be used to create Oracle packages, procedures and triggers Data centric and tightly integrated into the database Proprietary to Oracle and difficult to port to other database systems Data manipulation is slightly faster in PL/SQL than in Java PL/SQL is a traditional procedural programming language
Java:
Can be used to create Oracle packages, procedures and triggers Open standard, not proprietary to Oracle Incurs some data conversion overhead between the Database and Java type Java is an Object Orientated language, and modules are structured into classes Java can be used to produce complete applications
PS: Starting with Oracle 10g, .NET procedures can also be stored within the database (Windows only). Nevertheless, unlike PL/SQL and JAVA, .NET code is not usable on non-Windows systems. PS: In earlier releases of Oracle it was better to put as much code as possible in procedures rather than triggers. At that stage procedures executed faster than triggers as triggers had to be re-compiled every time before executed (unless cached). In more recent
releases both triggers and procedures are compiled when created (stored p-code) and one can add as much code as one likes in either procedures or triggers. However, it is still considered a best practice to put as much of your program logic as possible into packages, rather than triggers.
Note: If you recompile an object, the LAST_DDL_TIME column is updated, but the TIMESTAMP column is not updated. If you modified the code, both the TIMESTAMP and LAST_DDL_TIME columns are updated.
[edit] How can one search PL/SQL code for a string/ key value?
The following query is handy if you want to know where certain tables, columns and expressions are referenced in your PL/SQL source code.
SELECT type, name, line FROM user_source WHERE UPPER(text) LIKE UPPER('%&KEYWORD%');
If you run the above query from SQL*Plus, enter the string you are searching for when prompted for KEYWORD. If not, replace &KEYWORD with the string you are searching for.
FROM
CREATE OR REPLACE TRIGGER change_hist -- Store code in hist table AFTER CREATE ON SCOTT.SCHEMA -- Change SCOTT to your schema name DECLARE BEGIN IF ORA_DICT_OBJ_TYPE in ('PROCEDURE', 'FUNCTION', 'PACKAGE', 'PACKAGE BODY', 'TYPE', 'TYPE BODY') THEN -- Store old code in SOURCE_HIST table INSERT INTO SOURCE_HIST SELECT sysdate, all_source.* FROM ALL_SOURCE WHERE TYPE = ORA_DICT_OBJ_TYPE -- DICTIONARY_OBJ_TYPE IN 8i AND NAME = ORA_DICT_OBJ_NAME; -- DICTIONARY_OBJ_NAME IN 8i END IF; EXCEPTION WHEN OTHERS THEN raise_application_error(-20000, SQLERRM); END; / show errors
A better approach is to create an external CVS or SVN repository for the scripts that install the PL/SQL code. The canonical version of what's in the database must match the latest CVS/SVN version or else someone would be cheating.
Please note: there is no legal way to unwrap a *.plb binary file. You are supposed to backup and keep your *.pls source files after wrapping them. However it is possible for skilled hackers to unwrap your wrapped Oracle PL/SQL code.
DBMS_OUTPUT is useful for debugging PL/SQL programs. However, if you print too much, the output buffer will overflow. In that case, set the buffer size to a larger value, eg.: set serveroutput on size 200000 If you forget to set serveroutput on type SET SERVEROUTPUT ON once you remember, and then EXEC NULL;. If you haven't cleared the DBMS_OUTPUT buffer with the disable or enable procedure, SQL*Plus will display the entire contents of the buffer when it executes this dummy PL/SQL block. To display an empty line, it is better to use new_line procedure than put_line with an empty string.
Copy and paste these examples to get you started: Write File
DECLARE fHandler UTL_FILE.FILE_TYPE; BEGIN fHandler := UTL_FILE.FOPEN('MYDIR', 'myfile', 'w'); UTL_FILE.PUTF(fHandler, 'Look ma, Im writing to a file!!!\n'); UTL_FILE.FCLOSE(fHandler); EXCEPTION WHEN utl_file.invalid_path THEN raise_application_error(-20000, 'Invalid path. Create directory or set UTL_FILE_DIR.'); END; /
Read File
DECLARE fHandler UTL_FILE.FILE_TYPE; buf varchar2(4000); BEGIN fHandler := UTL_FILE.FOPEN('MYDIR', 'myfile', 'r'); UTL_FILE.GET_LINE(fHandler, buf); dbms_output.put_line('DATA FROM FILE: '||buf); UTL_FILE.FCLOSE(fHandler); EXCEPTION WHEN utl_file.invalid_path THEN raise_application_error(-20000, 'Invalid path. Create directory or set UTL_FILE_DIR.'); END; /
NOTE: UTL_FILE was introduced with Oracle 7.3. Before Oracle 7.3 the only means of writing a file was to use DBMS_OUTPUT with the SQL*Plus SPOOL command.
BEGIN var := 'CREATE TABLE temp1(col1 NUMBER(2))'; EXECUTE IMMEDIATE var; END;
NOTE: The DDL statement in quotes should not be terminated with a semicolon. Users running Oracle versions below Oracle 8i can look at the DBMS_SQL package (see FAQ about Dynamic SQL).
One can also use the older DBMS_SQL package (V2.1 and above) to execute dynamic statements. Look at these examples:
CREATE OR REPLACE PROCEDURE DYNSQL AS cur integer; rc integer; BEGIN cur := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(cur, 'CREATE TABLE X (Y DATE)', DBMS_SQL.NATIVE); rc := DBMS_SQL.EXECUTE(cur); DBMS_SQL.CLOSE_CURSOR(cur); END; /
DBMS_SQL.BIND_VARIABLE(v_cursor, ':x', no); DBMS_SQL.DEFINE_COLUMN_CHAR(v_cursor, 1, v_dname, 20); v_rows := DBMS_SQL.EXECUTE(v_cursor); loop if DBMS_SQL.FETCH_ROWS(v_cursor) = 0 then exit; end if; DBMS_SQL.COLUMN_VALUE_CHAR(v_cursor, 1, v_dname); DBMS_OUTPUT.PUT_LINE('Deptartment name: '||v_dname); end loop; DBMS_SQL.CLOSE_CURSOR(v_cursor); EXCEPTION when others then DBMS_SQL.CLOSE_CURSOR(v_cursor); raise_application_error(-20000, 'Unknown Exception Raised: '|| sqlcode||' '||sqlerrm); END; /
%ROWTYPE %ROWTYPE is used to declare a record with the same types as found in the specified database table, view or cursor. Examples:
DECLARE
[edit] How does one get the value of a sequence into a PL/SQL variable?
As you might know, one cannot use sequences directly from PL/SQL; Oracle prohibits this:
i := sq_sequence.NEXTVAL;
However, one can use embedded SQL statements to obtain sequence values:
select sq_sequence.NEXTVAL into :i from dual;
Note: This restriction has been removed in oracle 11g and the former syntax (direct assignment) can be used.
External Procedure Listeners: From Oracle 8 one can call external 3GL code in a dynamically linked library (DLL or shared object). One can write a library in C/ C++ to do whatever is required. Defining this C/C++ function to PL/SQL makes it executable. Look at this External Procedure example. Using Java See example at http://www.orafaq.com/scripts/plsql/oscmd.txt DBMS_SCHEDULER In Oracle 10g and above, one can execute OS commands via the DBMS_SCHEDULER package. Look at this example:
BEGIN dbms_scheduler.create_job(job_name job_type job_action enabled auto_drop END; / exec dbms_scheduler.run_job('myjob'); => => => => => 'myjob', 'executable', '/app/oracle/x.sh', TRUE, TRUE);
-- Employee cursor all employees for a dept number CURSOR emp_cur (v_dept_no DEPT.DEPTNO%TYPE) IS SELECT ename FROM emp WHERE deptno = v_dept_no; BEGIN FOR dept_rec IN dept_cur LOOP dbms_output.put_line('Employees in Department '|| TO_CHAR(dept_rec.deptno)); FOR emp_rec in emp_cur(dept_rec.deptno) LOOP
[edit] How often should one COMMIT in a PL/SQL loop? / What is the best commit strategy?
Contrary to popular belief, one should COMMIT less frequently within a PL/SQL loop to prevent ORA-1555 (Snapshot too old) errors. The higher the frequency of commit, the sooner the extents in the undo/ rollback segments will be cleared for new transactions, causing ORA-1555 errors. To fix this problem one can easily rewrite code like this:
FOR records IN my_cursor LOOP ...do some stuff... COMMIT; END LOOP; COMMIT;
... to ...
FOR records IN my_cursor LOOP ...do some stuff... i := i+1; IF mod(i, 10000) = 0 THEN COMMIT; END IF; END LOOP; COMMIT;
If you still get ORA-1555 errors, contact your DBA to increase the undo/ rollback segments. NOTE: Although fetching across COMMITs work with Oracle, is not supported by the ANSI standard.
Issuing frequent commits is bad, bad, BAD! Its the WORST thing you can do just dont do it! In the following example I will create around 7 million rows and then attempt to update a portion of them serially. In addition, I will issue a commit every thousandth row. Example 1.1: Creating a somewhat large table
SQL> create table big_employee_table
2 as 3 select rownum as eid 4 , e.* 5 from hr.employees e 6 , dba_objects do; Table created. Elapsed: 00:00:12.23 SQL> select count(*) 2 from big_employee_table; COUNT(*) ---------7838713 Elapsed: 00:00:08.11
Before I go on, notice that Oracles Create Table As (CTAS) method blazed thru table creation. Thats 7.84 Million rows in 12.23 seconds. Sometimes, this is the very best method of updating large data sets. The following block updates 100,000 rows, serially, committing every 1000 rows: Example 1.2: Updating serially
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 declare cursor c is select * from big_employee_table where rownum <= 100000; begin for r in c loop update big_employee_table set salary = salary * 1.03 where eid = r.eid; if mod ( r.eid, 1000 ) = 0 then commit; end if; end loop; end; /
Observe that the update took more time than I have patience for ;). At 20 minutes I killed the session. It is painfully slow and should never be done. Moreover, it chewed up an entire CPU core for the duration. If youre only updating a few rows, why do it in PL/SQL at all? I like Tom Kytes approach (paraphrasing):
1. 2. 3. 4. Do If If If it in SQL. SQL cant do it, do it in PL/SQL. PL/SQL cant do it, do it in Java. Java cant do it ask yourself if it needs to be done.
cursor c is select rowid rid , salary from big_employee_table where rownum <= 100000; begin open c; loop fetch c bulk collect into lr_rowid , lr_salary limit 500; for a in 1 .. lr_rowid.count loop lr_salary ( a ) := lr_salary ( a ) * 1.03; end loop; forall b in 1 .. lr_rowid.count update big_employee_table set salary = lr_salary ( b ) where rowid in ( lr_rowid ( b )); exit when c%notfound; end loop; close c; commit; -- there! not in the loop exception when others then rollback; dbms_output.put_line ( sqlerrm ); end; /
Notice that the update completed in 2 seconds! Ive seen faster but my two-gerbil sandbox machine doesnt have the power that our newer servers do. The point is that the update was incredibly fast and chewed up only 10% of one core. So, in answer to the question of how often should I commit? I say dont until you absolutely have to.
[edit] I can SELECT from SQL*Plus but not from PL/SQL. What is wrong?
PL/SQL respect object privileges given directly to the user, but does not observe privileges given through roles. The consequence is that a SQL statement can work in SQL*Plus, but will give an error in PL/SQL. Choose one of the following solutions:
Grant direct access on the tables to your user. Do not use roles!
A row-level trigger cannot query or modify a mutating table. (Of course, NEW and OLD still can be accessed by the trigger). A statement-level trigger cannot query or modify a mutating table if the trigger is fired as the result of a CASCADE delete. Etc.
-- Database A: receives a PL/SQL table from database B CREATE OR REPLACE PROCEDURE pcalled(TabX DBMS_SQL.VARCHAR2S) IS BEGIN -- do something with TabX from database B null; END; /
-- Database B: sends a PL/SQL table to database A CREATE OR REPLACE PROCEDURE pcalling IS TabX DBMS_SQL.VARCHAR2S@DBLINK2; BEGIN pcalled@DBLINK2(TabX); END; /
Functions MUST return a value, procedures don't need to. You can have DML (insert,update, delete) statements in a function. But, you cannot call such a function in a SQL query. For example, if you have a function that is updating a table, you cannot call that function from a SQL query. - select myFunction(field) from sometable; will throw error.
[edit] What are the PL/SQL compiler limits for block, record, subquery and label nesting?
The following limits apply: Level of Block Nesting: 255 Level of Record Nesting: 32 Level of Subquery Nesting: 254 Level of Label Nesting: 98
Autonomous transactions: As workaround, one can use autonomous transactions. Autonomous transactions execute separate from the current transaction.
Unlike regular triggers, autonomous triggers can contain COMMIT and ROLLBACK statements. Example:
SQL> CREATE OR REPLACE TRIGGER tab1_trig 2 AFTER insert ON tab1 3 DECLARE 4 PRAGMA AUTONOMOUS_TRANSACTION; 5 BEGIN 6 INSERT INTO log VALUES (SYSDATE, 'Insert on TAB1'); 7 COMMIT; -- only allowed in autonomous triggers 8 END; 9 / Trigger created. SQL> INSERT INTO tab1 VALUES (1); 1 row created.
Note that with the above example will insert and commit log entries - even if the main transaction is rolled-back! Remember that an "autonomous_transaction" procedure/function/trigger is a whole transaction in itself and so it must end with a commit or a rollback statement.
*********************************************************************** **************** NEEDED FOR A CODE TYPE FIELD(WITH PROPERTY->LOV->G_LOV) WHOSE DESCRIPTION IS GOING TO POPULATE THROUGH THE G_LOV AT RUN TIME IN THE NBT FIELD ATTACHED TO ITS NEXT POSITION ON THE CANVAS:WRITE FOLLOWING TWO TRIGGERS AT THE CODE FIELD(eg. PARTY_CODE AND ITS NBT FIELD IS NBT_PARTY_CODE) :-
DECLARE L_ERR VARCHAR2(500); BEGIN GET_NEWLOV('PRTY',NULL,L_ERR); IF :GLOBAL.CODE IS NOT NULL THEN :BPURT003.PARTY_CODE := :GLOBAL.CODE; :BPURT003.NBT_PARTY_CODE := :GLOBAL.DES; END IF; END;
TRG-->WHEN_VALIDATE_ITEM ------------------------DECLARE L_ERR VARCHAR2(500); BEGIN IF :BPURT003.PARTY_CODE IS NOT NULL THEN :BPURT003.NBT_PARTY_CODE := GET_DESCRIPTION('PRTY',:BPURT003.PARTY_CODE,L_ERR); IF L_ERR IS NOT NULL THEN :CONTENT.MESSAGES := L_ERR; RAISE FORM_TRIGGER_FAILURE; END IF; END IF; END;
*********************************************************************** **************** WE MUST WRITE TWO TRIGGERS AT DETAIL (DATA) BLOCK LEVEL:PRE_INSERT TRIGGER::BQCST001.ENTERED_BY:=:GLOBAL.USER_ID; :BQCST001.ENTERED_DATE:=SYSDATE; PRE_UPDATE TRIGGER::BQCST001.MODIFIED_BY:=:GLOBAL.USER_ID; :BQCST001.MODIFIED_DATE:=SYSDATE;
*********************************************************************** ***************** TO CREATE A NEW USER WITH ITS SEPERATE TABLESPACE :create tablespace TSMAIN datafile 'E:\oracle\PRODUCT\10.2.0\oraDATA\SPMPUNEO\TSSPMMAIN.DBF' size 2000M default storage (initial 10k next 10k minextents 1 maxextents 121 pctincrease 50) online ;
DROP USER ETAWA CASCADE;--droped forcefully. CREATE USER SPMMAIN IDENTIFIED BY MAIN2008 DEFAULT TABLESPACE TSMAIN TEMPORARY TABLESPACE TEMP; GRANT CONNECT,RESOURCE,DBA TO SPMMAIN WITH ADMIN OPTION;
IMP USERID= SPMMAIN/MAIN2008@TEST FROMUSER=SPMMAIN TOUSER=SPMMAIN FILE=C:\ABC.DMP LOG=C:\IMP.LOG EXP USERID=<USER_NAME>\PASSWORD OWNER='NEO' COMPRESS=N FILE='C:\EMP.DMP LOG=C:\FILE.LOG; ---------------------------------------------------------------------------------------create tablespace TSOCAP datafile 'E:\oracle\oradata\NEOORC\TS_OCAP.DBF' size 500M default storage (initial 10k next 10k minextents 1 maxextents 121 pctincrease 50) online ;
CREATE USER OCA IDENTIFIED BY OCA DEFAULT TABLESPACE TSOCAP TEMPORARY TABLESPACE TEMP; GRANT CONNECT,RESOURCE,DBA TO OCA WITH ADMIN OPTION;
CREATE USER OCAPPAY IDENTIFIED BY PAY DEFAULT TABLESPACE TSOCAP TEMPORARY TABLESPACE TEMP; GRANT CONNECT,RESOURCE,DBA TO OCAPPAY WITH ADMIN OPTION;
ELSIF :BPRDT135.STATUS = 'V' THEN P_ERR := NULL; IF SHOW_ALERT('G_ALERT') = 88 THEN AUTH_PP('A',:BPRDT135.DOC_DATE,:BPRDT135.YEAR_NO,P_ERR); IF P_ERR IS NULL THEN COMMIT_FORM; :CONTENT.MESSAGES := 'Plan Authorised';
ELSE :CONTENT.ERRORS := P_ERR; END IF; END IF; --IF SHOW_ALERT('G_ALERT') = 88 THEN END IF; IF :BPRDT135.NBT_STATUS IS NULL THEN :CONTENT.MESSAGES :='To Authorise First Generate a Valid Plan'; raise form_trigger_failure; END IF; END;
WHEN_VALIDATE_ITEM IF :BPRDT136.COMPLETE_QTY >:BPRDT136.PLAN_QTY THEN :CONTENT.MESSAGES :='Completed Qty. cannot be more than Plan Qty.';
*********************************************************************** **********************
DECLARE L_VAR VARCHAR2(50); L_ERR VARCHAR2(50); BEGIN :GLOBAL.MATCODE:=NULL; :GLOBAL.MATDES:=NULL; :GLOBAL.PARTNO:=NULL; L_VAR := ' MAT_CAT <> ''MC05'' '; GET_MATLOV('MATR',L_VAR,L_ERR); IF L_ERR IS NULL THEN :BPRDT137.MAT_CODE :BPRDT137.PART_DESC :BPRDT137.PART_NO := :GLOBAL.MATCODE; := :GLOBAL.MATDES; := :GLOBAL.PARTNO;
DECLARE L_DESC VARCHAR2(200); L_ERR VARCHAR2(200); BEGIN IF :BPRDT137.PART_NO IS NOT NULL THEN L_DESC := NULL; L_DESC := GET_MATDESCRIPTION ('PART',:BPRDT137.PART_NO,L_ERR);
END IF;
END;
POST_QUERY
L_DESC :=GET_MATDESCRIPTION('MATR',:BPRDT137.MAT_CODE,L_ERR); IF L_ERR IS NULL THEN :BPRDT137.PART_DESC := SUBSTR(L_DESC,12) ; END IF; :BPRDT137.NBT_UNIT := GET_UNIT(:BPRDT137.MAT_CODE,'I',L_ERR); *********************************************************************** *********************** FOR POPULATE BUTTON CODE:WHEN_BUTTON_PRESSED
DECLARE CURSOR CUR_EMP IS SELECT * FROM BCOMT011 WHERE TYPE_ID = 'NSEM' AND NVL(TRANSFER_FLAG,'N') = 'N' ORDER BY CODE_DESC; BEGIN IF SHOW_ALERT('G_ALERT') = 88 THEN DELETE FROM BCOMT136 WHERE TS_DATE = :BCOMT137.TS_DATE; GO_BLOCK('BCOMT136');
CLEAR_BLOCK; FOR REC IN CUR_EMP LOOP CREATE_RECORD; :BCOMT136.TS_DATE :BCOMT137.TS_DATE; :BCOMT136.SR_NO := :SYSTEM.TRIGGER_RECORD; :BCOMT136.PROJ_ID := REC.CODE_VALUE; :BCOMT136.EMP_ID REC.TYPE_CODE; END LOOP; --FOR REC IN CUR_EMP LOOP FIRST_RECORD; END IF; END; *********************************************************************** ************************* FOR DEFAULT DATE PARAMETER:=>YEAR OPENING DATE := :=
:P_DATE_TO := TO_DATE(SYSDATE); *********************************************************************** ************************* for report button to call another report:-
srw.run_report('report=BFASR040SINPLANT '|| ' P_DOC_FR='||:DOC_NO1|| ' P_ORD_SERIES='||:ORD_SERIES); *********************************************************************** ************************* CONVERSION TO EXCEL FROM REPORT:-
procedure U_1ButtonAction is
cursor cur is SELECT A.EMP_CODE,A.EMP_TITLE ||' '||A.EMP_FNAME ||' '||A.EMP_LNAME EMP_NAME,A.EMP_DEPT,A.EMP_TYPE,EMP_DOJ FROM BPAYT030 A WHERE A.EMP_TYPE = DECODE(:P_EMPTYPE,'A',A.EMP_TYPE,:P_EMPTYPE) AND A.EMP_DEPT = DECODE(:P_EMPDEPT,'A',A.EMP_DEPT,:P_EMPDEPT) AND EMP_STATUS ='Y'; --AND A.JOB_TITLE = DECODE(:P_JOB,'A',A.EMP_DEPT,:P_JOB)
VARCHAR2(100);
VARCHAR2(200); VARCHAR2(200);
V_outfile := text_io.fopen(L_FILENAME,'W'); V_outstring := ','||','||'BCSTR010_MIGNEW1 '; TEXT_IO.PUT_LINE(V_OUTFILE, V_OUTSTRING); V_outstring :=''; TEXT_IO.PUT_LINE(V_OUTFILE, V_OUTSTRING);
--EXCEL FILE HEADS V_outstring :='EMPLOYEE TYPE'||','|| 'DEPARTMENT'||','|| 'CODE'||','|| 'DOJ' ||','|| 'EMPLOYEE NAME';
TEXT_IO.PUT_LINE(V_OUTFILE, V_OUTSTRING);
--DATA IN EXCEL
*********************************************************************** ************************************
DECLARE v_outfile text_io.file_type; v_outstring varchar2(1000); L_DocDate Varchar2(10); L_InvDate Varchar2(10); L_CheqDate Varchar2(10); BEGIN V_outfile := text_io.fopen('C:\SALESMIS.CSV','w'); V_outstring := ''; TEXT_IO.PUT_LINE(V_OUTFILE, V_OUTSTRING);
l_docdate := to_char(:BFAST001.Doc_Date,'DD-MON-YY');
:BFAST001.Doc_Type||','|| :BFAST001.Acc_Code||','|| :BFAST001.Acc_Desc||','|| to_char(:BFAST001.NBT_Dr)||','|| to_char(:BFAST001.NBT_Cr)||','|| :BFAST001.Narr||','|| :BFAST001.Party_Code||','|| :BFAST001.Party_dESC||','|| :BFAST001.Emp_Code||','|| :BFAST001.Emp_Desc||','|| :BFAST001.Inv_No||','|| l_InvDate||','|| :BFAST001.Cheq_No||','|| l_CheqDate; TEXT_IO.PUT_LINE(V_OUTFILE, V_OUTSTRING);
NEXT_RECORD;
V_outstring := l_DocDate||','|| :BFAST001.Doc_No||','|| :BFAST001.Doc_Type||','|| :BFAST001.Acc_Code||','|| :BFAST001.Acc_Desc||','|| to_char(:BFAST001.NBT_Dr)||','|| to_char(:BFAST001.NBT_Cr)||','|| :BFAST001.Narr||','|| :BFAST001.Party_Code||','|| :BFAST001.Party_dESC||','|| :BFAST001.Emp_Code||','|| :BFAST001.Emp_Desc||','||
END LOOP; text_io.fclose(v_outfile); FIRST_RECORD; :content.messages := 'File (c:\gltran) Generated Successfully....'; END; *********************************************************************** ********************************** function CF_BALQTYFormula return Number is L_NUM begin L_NUM := NVL(:ORD_QTY,0) - NVL(:DI_QTY,0); RETURN L_NUM; NUMBER(10);
end;
(:issue_qty-(:oil_qty + :req_qty))
*********************************************************************** **************************** function CF_PCNTFormula return Number is L_PCNT NUMBER; begin L_PCNT := ((nvl(:ISSUE_QTY,0) * 100)/nvl(:CS_ISSUE_QTY,0)); return (L_PCNT); end; *********************************************************************** ******************************
procedure U_1ButtonAction is l_path VARCHAR2(1000):=' '; l_DESC VARCHAR2(300):=' '; begin IF :P_PARTY != 'A' THEN SELECT SUBSTR(PARTY_FNAME,1,8)||'-'||SUBSTR(CORR_CITY,1,4)||','|| SUBSTR(CORR_STATE,1,10) INTO L_DESC FROM BCOMT001 WHERE PARTY_CODE = :P_PARTY; l_path := 'C:\'||L_DESC||'-'||SYSDATE||'.pdf'; ELSE l_path := 'C:\'||'ALL-'||SYSDATE||'.pdf'; END IF;
srw.run_report('maximize=yes report=BCOMR050_RMNDLTTR DESFORMAT=PDF DESTYPE=FILE DESNAME='||''''||L_PATH||''''|| ' P_PARTY =' ||''''||:P_PARTY||''''|| ' P_DOCNO =' ||''''||:P_DOCNO||''''|| ' P_DATEFR=' ||''''||:P_DATEFR||''''|| ' P_DATETO=' ||''''||:P_DATETO||'''');
EXCEPTION when srw.run_report_failure then srw.message(30, 'Error mailing reports.'); raise srw.program_abort;
END;
*********************************************************************** *************************** BALANCE DIFF:SELECT YEAR_NO,SUM(OPEN_BAL_DR),SUM(OPEN_BAL_CR),SUM(OPEN_BAL_DR)SUM(OPEN_BAL_CR) DIFF FROM BFAST104 GROUP BY YEAR_NO *********************************************************************** *** alter table bcomt028 add sr_no number(10); alter table bcomt028 add doc_series varchar2(100); *********************************************************************** ***
*********************************************************************** **** Viewing Constraint information: SELECT CONSTARINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = bpost030;
VIEWING COLUMN CONSTRAINT : SELECT CONSTRAINT_NAME,COLUMN_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'BPOST030' *********************************************************************** *********** ALTER TABLE supplier MODIFY supplier_name varchar2(100) not null;
DESC DBA_USERS;
create tablespace TSIBSNEW datafile 'E:\oracle\oradata\NEOORC\TS_IBSNEW.DBF' size 10000M default storage (initial 10k next 10k minextents 1 maxextents 121 pctincrease 50) online ;
CREATE USER IBSNEW IDENTIFIED BY IBSNEW DEFAULT TABLESPACE TSIBSNEW TEMPORARY TABLESPACE TEMP; GRANT CONNECT,RESOURCE,DBA TO IBSNEW WITH ADMIN OPTION; *********************************************************************** **************** DELETING MANY LIKE TABLES:-
create or replace PROCEDURE delete_many_tables (tablename IN VARCHAR2) IS cur begin cur:= dbms_sql.OPEN_CURSOR(); for t in (select object_name from user_objects where object_type='TABLE' and object_name like tablename) loop execute immediate integer;
'drop table ' ||t.object_name|| ' cascade constraints'; end loop; dbms_sql.close_cursor(cur); end delete_many_tables;
EXECUTE DELETE_MANY_TABLES('DEPT%'); ********************************************************************** ALTER DATABASE DATAFILE 'E:\oracle\product\10.2.0\oradata\neoorc\TS_krish.DBF' RESIZE 1500M *********************************************************************** ** WHEN COLUMN SHIFT IN EXCEL THE IN SELECT STATEMENT USE BELOW STATEMENT. REPLACE(CORR_ADD1,',','-')
---------------PRE INSER FOR DOC_NO ----DECLARE L_DOCNO NUMBER(8):=0; P_ERR VARCHAR2(100); BEGIN
:BPRDT185.ENTERED_BY
:= :GLOBAL.USER_ID;
:BPRDT185.ENTERED_DATE := :GLOBAL.SYSDATE;
:BPRDT185.DOC_DATE P_ERR
:= :GLOBAL.SYSDATE;
:= NULL;
L_DOCNO
:= L_DOCNO + 1;
IF P_ERR IS NULL THEN :BPRDT185.DOC_NO :BPRDT185.STATUS := L_DOCNO; := 'V'; := 'Document Saved VIDE NO. '||
:= P_ERR;
RAISE FORM_TRIGGER_FAILURE; END IF; :BPRDT185.NBT_STATUS exception when others then :content.errors :=sqlerrm; END; ------------PRE INSERT FOR DOC_NO ----------:= GET_DOC_STATUS(:BPRDT185.STATUS);
/********* ENTERING THE USER NAME FOR THE ENTRY OF RECORDS *********/
DECLARE L_DOCNO NUMBER(8); P_ERR VARCHAR2(100); L_YRNO VARCHAR2(2); E_DELIV EXCEPTION; L_CODE NUMBER(3); L_COUNT NUMBER(3); L_ERR VARCHAR2(500); L_YEAR_NO NUMBER(4); L_DOC_COUNT NUMBER(3);
BEGIN
/**IF NVL(:BCOMT050.DOC_NO,0) <= 0 THEN :CONTENT.MESSAGES := 'DOCUMENT NO. CAN NOT BE NULL......'; RAISE FORM_TRIGGER_FAILURE; END IF;*/
IF :BCOMT050.DELV_DATE IS NULL THEN :CONTENT.MESSAGES := 'DELIVERY DATE CAN NOT BE NULL......'; RAISE FORM_TRIGGER_FAILURE;
IF :BCOMT050.PARTY_CODE IS NULL THEN :CONTENT.MESSAGES := 'PARTY CODE CANNOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; END IF;
IF :BCOMT050.PARTY_CODE IS NOT NULL THEN SELECT COUNT(PARTY_CODE)INTO L_COUNT FROM BCOMT001 WHERE PARTY_CODE = :BCOMT050.PARTY_CODE;
IF :BCOMT050.DESPATCH_MODE IS NULL THEN :CONTENT.MESSAGES := 'DESPTACH MODE CANNOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; ELSIF :BCOMT050.PAYMENT_TERM IS NULL THEN :CONTENT.MESSAGES := 'PAYMENT TERM CANNOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; ELSIF :BCOMT050.INSPECTION IS NULL THEN :CONTENT.MESSAGES := 'INSPECTION CANNOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; ELSIF :BCOMT050.EXPY_DATE IS NULL THEN :CONTENT.MESSAGES := 'EXPIRY DATE CAN NOT BE NULL......'; RAISE FORM_TRIGGER_FAILURE; END IF;
--L_DOCNO :=:BCOMT050.DOC_NO ; IF NVL(:PARAMETER.P_FLAG,'N') ='Y' THEN IF :BCOMT050.DOC_NO IS NULL THEN :CONTENT.MESSAGES := 'PLEASE ENTER PURCHASE ORDER NO FIRST'; RAISE FORM_TRIGGER_FAILURE; ELSE SELECT COUNT(*) INTO L_DOC_COUNT FROM BCOMT050 WHERE DOC_NO = :BCOMT050.DOC_NO AND YEAR_NO = :GLOBAL.G_YEAR_NO; IF L_DOC_COUNT > 0 THEN :CONTENT.MESSA GES := 'THIS NO ALREADY EXISTS. PLEASE CHANGE NO'; RAISE FORM_TRIGGER_FAILURE; END IF; END IF; L_DOCNO := :BCOMT050.DOC_NO; ELSIF NVL(:PARAMETER.P_FLAG,'N') ='N' THEN
RAISE FORM_TRIGGER_FAILURE; END IF; :BCOMT050.ORD_STAT_DES := GET_DOC_STATUS(:BCOMT050.ORD_STAT); IF :BCOMT050.CB_REQ <> 'NO' THEN :BCOMT050.DOC_SERIES := 'PO/'|| TO_CHar(:BCOMT050.DOC_NO)||:BCOMT050.CB_REQ ; ELSE :BCOMT050.DOC_SERIES := 'PO/'||TO_CHar(:BCOMT050.DOC_NO);
WHEN E_DELIV THEN GO_ITEM('BCOMT050.DELV_DATE'); :CONTENT.ERRORS := 'Delivery Date Cannot be less than Order Date'; GO_ITEM('BCOMT050.DELV_DATE'); END; -----------------WHEN NEW FORM INSTANCE ----------if :BSTRT030.DOC_DATE IS NULL THEN :BSTRT030.DOC_DATE := TO_DATE(SYSDATE); END IF; ----------WHEN VALIDATE ITEM ---------DECLARE L_YEAR_NO NUMBER(4) := 0; L_ERR BEGIN L_YEAR_NO := VALIDATE_DATE(:GLOBAL.COMPANY_ID, :BSTRT030.DOC_DATE,L_ERR); IF L_YEAR_NO <= 0 THEN :CONTENT.ERRORS := L_ERR; RAISE FORM_TRIGGER_FAILURE; ELSE VARCHAR2(200);
IF :BSTRT030.YEAR_NO > 0 AND :BSTRT030.YEAR_NO <> L_YEAR_NO THEN :CONTENT.ERRORS := 'YEAR IS CHANGING. DELETE THIS VOUCHER AND RE ENTER IT'; RAISE FORM_TRIGGER_FAILURE; ELSE IF :GLOBAL.YEAR_NO = L_YEAR_NO THEN IF :BSTRT030.DOC_DATE IS NULL THEN :CONTENT.MESSAGES:= 'Invalid Date'; RAISE FORM_TRIGGER_FAILURE; ELSE :GLOBAL.DOC_DATE := :BSTRT030.DOC_DATE; END IF; ELSE :GLOBAL.G_YR_NO := L_YEAR_NO; :GLOBAL.YEAR_NO := L_YEAR_NO; END IF; END IF; END IF; END; ---------------key listval -------DECLARE
BEGIN
L_VAR := null; GET_NEWLOV('STOR',L_VAR,P_ERR); IF P_ERR IS NULL THEN IF :GLOBAL.CODE IS NOT NULL THEN :BSTRT030.STORE_ID := LTRIM(RTRIM(:GLOBAL.CODE)); :BSTRT030.NBT_STORE := :GLOBAL.DES; END IF; ELSE :CONTENT.ERRORS := P_ERR; END IF;
---------DECLARE P_ERR VARCHAR2(100):=NULL; L_DESC VARCHAR2(200):=NULL; BEGIN IF :BSTRT030.STORE_ID IS NOT NULL THEN L_DESC := GET_DESCRIPTION('STOR',:BSTRT030.STORE_ID,P_ERR); IF P_ERR IS NULL THEN :BSTRT030.NBT_STORE := L_DESC; ELSE :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE;
END IF; ELSE :CONTENT.ERRORS := ' Store Cannot Be Null'; RAISE FORM_TRIGGER_FAILURE; END IF; END; ---------------keylistval -------declare
IF :GLOBAL.CODE IS not NULL THEN :BSTRT030.EMP_CODE:=:GLOBAL.CODE; :BSTRT030.NBT_EMP_DESC:=:GLOBAL.DES; end if; end; ------when validate item ----DECLARE L_DESC VARCHAR2(50); P_ERR VARCHAR2(100); BEGIN P_ERR:=NULL; L_DESC:= NULL; L_DESC:= GET_DESCRIPTION('EMPY',:BSTRT030.EMP_CODE,P_ERR); IF L_DESC IS NULL THEN :BSTRT030.EMP_CODE:= NULL;
:CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; ELSE :BSTRT030.NBT_EMP_DESC :=L_DESC; END IF; END; -------key next item -GO_ITEM('BSTRT031.PART_NO'); ----------m_lov -keylistval -------declare l_var varchar2(50); l_err varchar2(100); begin
l_var := NULL;
get_MATLOV('MATR',l_var,l_err);
IF L_ERR IS NULL THEN IF :GLOBAL.CODE IS NOT NULL THEN :BSTRT031.MAT_CODE :BSTRT031.PART_NO := :GLOBAL.CODE; := :GLOBAL.NO;
--go_item('BSTRT033.QTY'); end;
IF L_ERR IS NULL THEN :BSTRT031.NBT_PART_DESC := SUBSTR(L_DESC,12); :BSTRT031.MAT_CODE := TO_NUMBER(SUBSTR(L_DESC,1,10)); SELECT BASE_UNIT INTO :BSTRT031.NBT_UNIT FROM BCOMT002 WHERE PART_NO = :BSTRT031.PART_NO; ELSE :CONTENT.ERRORS := L_ERR; :BSTRT031.NBT_PART_DESC := NULL; RAISE FORM_TRIGGER_FAILURE; END IF;
END IF;
EXCEPTION WHEN NO_DATA_FOUND THEN :CONTENT.ERRORS := 'Part No. Is Not Valid'; Raise Form_Trigger_Failure; END;
----------for parameter code doc_NO --------KEY_LISTVAL -------DECLARE L_VAR VARCHAR2(50); L_ERR VARCHAR2(100);
SET_LOV_COLUMN_PROPERTY ('G_LOV', 1, WIDTH, 0); SET_LOV_COLUMN_PROPERTY ('G_LOV', 2, WIDTH, 80); SET_LOV_COLUMN_PROPERTY ('G_LOV', 2, TITLE, 'Type No.');
IF L_ERR IS NOT NULL THEN :CONTENT.MESSAGES:=L_ERR; ELSE :CONTENT.MESSAGES:=' '; END IF; END; ------------------------KEY LIST VAL FOR PARTY CODE WITH PARAMETER ----------
IF :BSTRT030.DOC_TYPE = 'GAS' THEN SET_ITEM_PROPERTY('BSTRT030.PARTY_CODE',LOV_NAME,'L_LOV_PARTY _GAS'); LIST_VALUES; ELSIF :BSTRT030.DOC_TYPE = 'GRS' THEN SET_ITEM_PROPERTY('BSTRT030.PARTY_CODE',LOV_NAME,'L_LOV_PARTY _GRS'); LIST_VALUES; ELSIF :BSTRT030.DOC_TYPE = 'GNR' THEN
SET_ITEM_PROPERTY('BSTRT030.PARTY_CODE',LOV_NAME,'L_LOV_PARTY' ); LIST_VALUES; END IF; ----------------M_LOV ---select 'xxxxxxxxxx' matcode,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'partno, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'matdesc from dual --------GRN_NO KEYLISTVAL ----------
IF :BSTRT030.DOC_TYPE = 'GAS' AND :BSTRT030.PARTY_CODE IS NOT NULL THEN SET_ITEM_PROPERTY('BSTRT030.GRN_NO',LOV_NAME,'L_LOV_GRN_GAS'); LIST_VALUES; POPULATE_GRN_DATA; ELSIF :BSTRT030.DOC_TYPE = 'GRS' AND :BSTRT030.PARTY_CODE IS NOT NULL THEN SET_ITEM_PROPERTY('BSTRT030.GRN_NO',LOV_NAME,'L_LOV_GRN_GRS '); LIST_VALUES; POPULATE_GRN_DATA;
ELSIF :SYSTEM.BLOCK_STATUS = 'QUERY' THEN :CONTENT.ERRORS := 'Field Cannot be Modified'; RAISE FORM_TRIGGER_FAILURE; END IF; ---------PARAMETER CODE --------L_LOV_PARTY_GAS ----SELECT DISTINCT B.PARTY_FNAME||' '||B.PARTY_LNAME,C.PARTY_CODE FROM BCOMT001 B,BSTRT010 C WHERE B.PARTY_CODE = C.PARTY_CODE
AND C.GRN_STATUS = 'A' ORDER BY B.PARTY_FNAME||' '||B.PARTY_LNAME,C.PARTY_CODE --------------L_LOV_GRN_GAS ------------SELECT DOC_NO,DOC_TYPE FROM BSTRT010 WHERE GRN_STATUS = 'A' AND PARTY_CODE = :BSTRT030.PARTY_CODE ORDER BY DOC_NO --------block level trigger ---------pre record -Enable_Disable_Form;
BEGIN /*IF :BSTRT030.STORE_ID IS NULL THEN :CONTENT.MESSAGES := 'STORE CAN NOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; */ --------------BY TAJINDER DT 25-AUG-06 ----------------------------IF VALIDATE_HEADER(P_ERR) = 0 THEN :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; --------------BY TAJINDER DT 25-AUG-06 -----------------------------
:= NULL;
:BSTRT030.DIS_STATUS := 'VALID'; :CONTENT.MESSAGES TO_CHAR( L_DOCNO); ELSE :CONTENT.ERRORS := P_ERR; := 'Document Saved VIDE NO. '||
END; ----------pre update -------DECLARE P_ERR VARCHAR2(100); BEGIN /*IF :BSTRT030.STORE_ID IS NULL THEN :CONTENT.MESSAGES := 'STORE CAN NOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; */ --------------BY TAJIDNER DT 25-AUG-06 ----------------------------IF VALIDATE_HEADER(P_ERR) = 0 THEN :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; --------------BY TAJIDNER DT 25-AUG-06 ----------------------------END IF;--IF VALIDATE_HEADER(P_ERR) = 0 THEN
BEGIN P_ERR:=NULL; :BSTRT030.NBT_STORE := GET_DESCRIPTION('STOR',:BSTRT030.STORE_ID,P_ERR); :BSTRT030.DIS_PARTY := GET_DESCRIPTION ('PRTY',:BSTRT030.PARTY_CODE,P_ERR); :NB_DIS_DOCTYPE := GET_DESCRIPTION('DTYP',:BSTRT030.DOC_TYPE,P_ERR); :BSTRT030.DIS_STATUS := GET_DOC_STATUS(:BSTRT030.DOC_STATUS); :BSTRT030.DOCNO_TEXT := :BSTRT030.DOC_NO; END;
SELECT BASE_UNIT INTO :BSTRT031.NBT_UNIT FROM BCOMT002 WHERE PART_NO = :BSTRT031.PART_NO; END;
--------------BY TAJINDER DT 25-AUG-06 ----------------------------IF VALIDATE_DETAIL(P_ERR) = 0 THEN :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; END IF;--IF VALIDATE_DETAIL(P_ERR) = 0 THEN
:BSTRT031.ENTERED_BY := :GLOBAL.USER_ID; :BSTRT031.ENTERED_DATE := SYSDATE; :BSTRT031.STATUS END; ------------program UNIT ENABLE DISABLE FORM ---------PROCEDURE Enable_Disable_Form IS := 'V';
BEGIN
END; --------------VALIDATE HEADER --------FUNCTION validate_HEADER(p_err out varchar) RETURN number IS BEGIN
--IF :BSTRT030.DOC_DATE > SYSDATE OR :BSTRT030.DOC_DATE IS NULL THEN --P_ERR := 'Doc date can not be null or greater than system date'; --return 0; IF :BSTRT030.STORE_ID IS NULL THEN P_ERR := 'Store id can not be null'; return 0; ELSIF :BSTRT030.PARTY_CODE IS NULL THEN
P_ERR := 'Party code can not be null'; return 0; ELSIF :BSTRT030.EMP_CODE IS NULL THEN P_ERR := 'Employee code can not be null'; return 0; ELSE RETURN 1; END IF; RETURN 1; END; --------------validate_detail ---------FUNCTION validate_detail(p_err out varchar) RETURN number IS BEGIN
IF :BSTRT031.PART_NO IS NULL THEN P_ERR := 'Part no. can not be null'; return 0; ELSE RETURN 1;
END IF;
RETURN 1; END; ---------SELECT A.PART_COMM FROM BCOMT051 A,BSTRT011 B WHERE A.PART_NO =B.PART_NO;
---------select PARTY_TITLE, PARTY_FNAME , PARTY_LNAME from bcomt001 A,BFASR041LABEL B WHERE A.VENDOR_CODE =B.VENDOR_CODE;
----SELECT A.PARTY_TITLE||''||A.PARTY_FNAME||''||A.PARTY_LNAME INTO L_NAME FROM BCOMT001 A,BFASR041LABEL B WHERE A.VENDOR_CODE =B.VENDOR_CODE ; RETURN L_NAME; EXCEPTION ------SELECT A.PARTY_CODE FROM BCOMT001 A , BCOMT011 B WHERE B.TYPE_CODE=A.PARTY_CAT; ----------------
SELECT PARTY_TITLE||''||PARTY_FNAME||''||PARTY_LNAME INTO L_NAME FROM BCOMT001 WHERE VENDOR_CODE =:P_PARTYCODE ; RETURN L_NAME;
:BVERT001.ENTERED_BY
:= :GLOBAL.USER_ID;
:= NULL;
L_DOCNO
:= L_DOCNO + 1;
:BVERT001.DOC_NO :BVERT001.STATUS
:= P_ERR;
RAISE FORM_TRIGGER_FAILURE; END IF; :BVERT001.NBT_STATUS exception when others then :content.errors :=sqlerrm; END; := GET_DOC_STATUS(:BVERT001.STATUS);
================== DECLARE L_SRNO NUMBER := 1; BEGIN IF :SYSTEM.RECORD_STATUS = 'NEW' THEN IF GET_BLOCK_PROPERTY('BVERT002',CURRENT_RECORD) = 1 THEN L_SRNO := 1; ELSE PREVIOUS_RECORD; L_SRNO := :BVERT002.SR_NO+1;
========= DECLARE L_SRNO NUMBER(5) := 1; BEGIN LAST_RECORD; L_SRNO := NVL(:BVERT002.SR_NO,0) + 1; CREATE_RECORD; :BVERT002.SR_NO := NVL(L_SRNO,1); END;
=========
:BVERT002.MODIFIED_BY
:= :GLOBAL.USER_ID;
:BVERT002.MODIFIED_DATE := :GLOBAL.SYSDATE;
END IF;
END;
-------------pre record
----------
to invoke popup the Browse file location window declare f varchar2(255); -- f is a variable for filename begin f:=get_file_name; /* get_file_name is a function that invoke the Browse file location window*/ :block.text:=f; /* :block.text is a database item that store the filename in a database column*/ end; ============================ declare AppID PLS_INTEGER; begin
end;
EDIT_TEXTITEM; --------FOR ITEM LOV --GET LOV1 --------KEY_LISTVAL ----declare l_var varchar2(50); L_ERR VARCHAR2(100); CODE1 VARCHAR2(50); begin l_var := null;
GET_LOV1('IMTEGRP',l_var,L_ERR); IF :GLOBAL.CODE IS NOT NULL THEN :CONTENT.GRP_DESC := :GLOBAL.CODE; :CONTENT.GRP_CODE := :GLOBAL.DES; END IF;
GO_BLOCK('TESTINGMASTER');
EXECUTE_QUERY; -- GO_BLOCK('CONTENT'); end; ---------KEY_NEXT_ITEM ----------DECLARE L_VAR VARCHAR2(100); BEGIN GO_BLOCK('TESTINGMASTER'); L_VAR:='GROUP_CODE='''':CONTENT.GRP_DESC'''; SET_BLOCK_PROPERTY('TESTINGMASTER',DEFAULT_WHERE,'GROUP_COD E ='||':CONTENT.GRP_DESC'); EXECUTE_QUERY; END; --------------code for IMPORTING WHEN BUTTON PRESSED --------declare SRNO NUMBER;
CURSOR C1 IS
begin if :content.grp_desc is null then :content.messages:='No IMTE Type is selected.Please Select IMTE Type First.'; elsif :content.importcode is null then :content.messages:='No IMTE Type is selected for Import.Please Select IMTE Type First.'; else SELECT MAX(TO_NUMBER(SRNO)) INTO SRNO FROM TESTINGMASTER WHERE GROUP_CODE=:CONTENT.GRP_DESC; IF SQL%FOUND THEN IF SRNO>=0 THEN SRNO:=SRNO+1; ELSE SRNO:=1; END IF; -ELSE
END IF;
GO_BLOCK('TESTINGMASTER'); CLEAR_BLOCK;
FOR REC IN C1 LOOP CREATE_RECORD; :SRNO:=SRNO; :METHOD_CODE:=REC.METHOD_CODE; :GROUP_CODE:=:CONTENT.GRP_DESC; :STANDARD_EQUIPEMENT:=REC. STANDARD_EQUIPEMENT; :IS_STANDARDNO:=REC.IS_STANDARDNO; :EFFECTIVE_FROMDATE:=REC.EFFECTIVE_FROMDATE; :CHK_SPECIFICATIONS:=REC.CHK_SPECIFICATIONS; :ACCEPTANCE_CRITERIA:=REC.ACCEPTANCE_CRITERIA; :OPTIONAL:=REC.OPTIONAL;
-------------
code for lov key listval declare l_var varchar2(50); L_ERR VARCHAR2(100); CODE1 VARCHAR2(50); begin l_var := null;
GET_LOV1('IMTEGRP',l_var,L_ERR); IF :GLOBAL.CODE IS NOT NULL THEN :CONTENT.importcode := :GLOBAL.CODE; --DO_KEY('ENTER_QUERY'); :CONTENT.importdesc := :GLOBAL.DES; -- :TESTINGMASTER.GROUP_CODE:=:GLOBAL.CODE; -- CODE1:=:GLOBAL.CODE; END IF; --SHOW_LOV('G_LOV');
end; -------
pre text item --:rmsincedate:=sysdate; ---------key listval ---------declare l_var varchar2(500); L_ERR VARCHAR2(100); L_GRP VARCHAR2(50); L_GRP_DESC VARCHAR2(100); begin
l_var := 'ITEM_CODE '||' NOT IN (SELECT ITEMCODE FROM REJECTEDMISSING where curstatus='||0||')';
if :REJECTEDMISSING.groupcode is not null then l_var:= 'ITEM_CODE '||' NOT IN (SELECT ITEMCODE FROM REJECTEDMISSING where curstatus='||0||') AND group_code ='||:REJECTEDMISSING.groupcode ; end if;
:REJECTEDMISSING.ITEMCODE := :GLOBAL.CODE;
--IF IMTE TYPE NOT SELECTED IF :REJECTEDMISSING.groupcode IS NULL THEN SELECT A.GROUP_CODE,A.G_DESC INTO L_GRP,L_GRP_DESC FROM ITEMCATGGRP A,ITEMMASTER B WHERE A.GROUP_CODE=B.GROUP_CODE AND B.ITEM_CODE=:REJECTEDMISSING.ITEMCODE;
--MESSAGE('11');PAUSE; IF :REJECTEDMISSING.ITEMCODE IS NOT NULL THEN --to check whether IMTE already exist in rejectedmissing table select count(*) into l_count from rejectedmissing where :REJECTEDMISSING.itemcode in (SELECT ITEMCODE FROM REJECTEDMISSING where curstatus='0');
if l_count>0 then :content.errors:='This IMTE already missing'; raise form_trigger_failure; end if;
if :REJECTEDMISSING.groupcode is not null then --to check whether enterd IMTE is valid for selected IMTE Type select count(*) into l_count from itemmaster where :REJECTEDMISSING.itemcode=item_code and group_code=:REJECTEDMISSING.groupcode ; if l_count=0 then
:content.errors:='Invalid IMTE for selected IMTE Type.'; raise form_trigger_failure; end if; end if;
:REJECTEDMISSING.NBT_IMTE := GET_DESC('IMTE', :REJECTEDMISSING.ITEMCODE,P_ERR); else :content.messages:='Select IMTE No.'; raise form_trigger_failure; END IF;
--IF IMTE TYPE NOT SELECTED IF :REJECTEDMISSING.groupcode IS NULL THEN SELECT A.GROUP_CODE,A.G_DESC INTO L_GRP,L_GRP_DESC FROM ITEMCATGGRP A,ITEMMASTER B WHERE A.GROUP_CODE=B.GROUP_CODE
AND B.ITEM_CODE=:REJECTEDMISSING.ITEMCODE;
END IF;
--FOR FINDING CURRENT LOCATION SELECT PARTYCODE,PARTYDESC INTO L_PARTY,L_PARTY_DESC FROM PARTYMASTER A,ITEMBALANCES B WHERE A.PARTYCODE=B.CUR_PARTY_CODE AND B.ITEM_CODE=:REJECTEDMISSING.ITEMCODE;
:REJECTEDMISSING.PARTYCODE:=L_PARTY; :REJECTEDMISSING.NBT_PARTY:=L_PARTY_DESC;
END;
---------------post_query ---DECLARE P_ERR VARCHAR2(100); BEGIN IF :REJECTEDMISSING.GROUPCODE IS NOT NULL THEN -PAUSE;
:REJECTEDMISSING.NBT_IMTETYPE := GET_DESC('IMTEGRP', :REJECTEDMISSING.GROUPCODE,P_ERR); END IF; IF :REJECTEDMISSING.ITEMCODE IS NOT NULL THEN :REJECTEDMISSING.NBT_IMTE := GET_DESC('IMTE', :REJECTEDMISSING.ITEMCODE,P_ERR); END IF; IF :REJECTEDMISSING.PARTYCODE IS NOT NULL THEN :REJECTEDMISSING.NBT_PARTY := GET_DESC('PARTY', :REJECTEDMISSING.PARTYCODE,P_ERR); END IF; /* IF P_ERR IS NOT NULL THEN :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; END IF;*/
EXCEPTION
WHEN OTHERS THEN BEGIN p_err := NULL; -- RETURN L_DESC; END; END; ----------pre insert
BEGIN
if :rejectedmissing.groupcode is null then :content.messages:='Enter IMTE Type.'; raise form_trigger_failure; end if;
if :rejectedmissing.rmsincedate is null then :content.messages:='Enter Missing Since Date.'; raise form_trigger_failure; end if;
:rejectedmissing.srNO:=L_ID; ELSE :rejectedmissing.srNO:=L_ID; END IF;*/ select max(nvl(TO_NUMBER(srno),0))+1 into l_id from rejectedmissing; :rejectedmissing.srNO:=L_ID; :rejectedmissing.CURSTATUS:=0;
EXCEPTION WHEN FORM_TRIGGER_FAILURE THEN RAISE FORM_TRIGGER_FAILURE; WHEN OTHERS THEN :CONTENT.ERRORS:=SQLERRM; end;
------------post insert --------update itembalances set status='4' where item_code=:itemcode; --------post-update -------update itembalances set status='4' where item_code=:itemcode; --------key list val ---------declare l_var varchar2(500); L_ERR VARCHAR2(100);
begin
GET_LOV1('IMTE',l_var,L_ERR); IF :GLOBAL.CODE IS NOT NULL THEN --message('1'|| :GLOBAL.CODE||:GLOBAL.des); pause; :REJECTEDMISSING.NBT_IMTE := :GLOBAL.DES; :REJECTEDMISSING.ITEMCODE := :GLOBAL.CODE; END IF;
GO_BLOCK('REJECTEDMISSING');
SET_BLOCK_PROPERTY('REJECTEDMISSING',DEFAULT_WHERE,'ITEMCO DE ='''||:REJECTEDMISSING.ITEMCODE||'''');
end; ----------when validate item -------DECLARE P_ERR VARCHAR2(100); L_PARTY VARCHAR2(50); L_PARTY_DESC VARCHAR2(100); BEGIN
EXECUTE_QUERY; END;
EXECUTE_QUERY; ----------pre insert -DECLARE L_COUNT NUMBER:=0; BEGIN --check for blank process code if :PRODUCTPROCESS.processcode is null then
--check for unique process code SELECT COUNT(*) INTO L_COUNT FROM PRODUCTPRoCESS WHERE PROCESSCODE=:PRODUCTPROCESS.PROCESSCODE; IF l_COUNT>0 THEN :CONTENT.MESSAGES:=''' '||:PRODUCTPROCESS.PROCESSCODE||''' already exists. Enter another Process code'; raise form_trigger_failure; END IF;
--check for blank process description if :PRODUCTPROCESS.processdescription is null then :content.messages:='Enter Process Description'; raise form_trigger_failure; end if;
----------if :BSTRT030.DOC_DATE IS NULL THEN :BSTRT030.DOC_DATE := TO_DATE(SYSDATE); END IF; ----------WHEN VALIDATE ITEM ---------DECLARE L_YEAR_NO NUMBER(4) := 0; L_ERR BEGIN L_YEAR_NO := VALIDATE_DATE(:GLOBAL.COMPANY_ID, :BSTRT030.DOC_DATE,L_ERR); IF L_YEAR_NO <= 0 THEN :CONTENT.ERRORS := L_ERR; RAISE FORM_TRIGGER_FAILURE; ELSE IF :BSTRT030.YEAR_NO > 0 AND :BSTRT030.YEAR_NO <> L_YEAR_NO THEN :CONTENT.ERRORS := 'YEAR IS CHANGING. DELETE THIS VOUCHER AND RE ENTER IT'; RAISE FORM_TRIGGER_FAILURE; ELSE IF :GLOBAL.YEAR_NO = L_YEAR_NO THEN IF :BSTRT030.DOC_DATE IS NULL THEN VARCHAR2(200);
:CONTENT.MESSAGES:= 'Invalid Date'; RAISE FORM_TRIGGER_FAILURE; ELSE :GLOBAL.DOC_DATE := :BSTRT030.DOC_DATE; END IF; ELSE :GLOBAL.G_YR_NO := L_YEAR_NO; :GLOBAL.YEAR_NO := L_YEAR_NO; END IF; END IF; END IF; END; ---------key listval -------DECLARE P_ERR VARCHAR2(100):= NULL; L_VAR VARCHAR2(100) := NULL;
BEGIN
IF P_ERR IS NULL THEN IF :GLOBAL.CODE IS NOT NULL THEN :BSTRT030.STORE_ID := LTRIM(RTRIM(:GLOBAL.CODE)); :BSTRT030.NBT_STORE := :GLOBAL.DES; END IF; ELSE :CONTENT.ERRORS := P_ERR; END IF;
END;
-------------when validate item ---------DECLARE P_ERR VARCHAR2(100):=NULL; L_DESC VARCHAR2(200):=NULL; BEGIN IF :BSTRT030.STORE_ID IS NOT NULL THEN
L_DESC := GET_DESCRIPTION('STOR',:BSTRT030.STORE_ID,P_ERR); IF P_ERR IS NULL THEN :BSTRT030.NBT_STORE := L_DESC; ELSE :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE;
END IF; ELSE :CONTENT.ERRORS := ' Store Cannot Be Null'; RAISE FORM_TRIGGER_FAILURE; END IF; END; ------------keylistval -------declare l_var varchar2(50); l_err varchar2(100); begin l_var := NULL; get_newlov('EMPY',L_VAR,l_err);
IF :GLOBAL.CODE IS not NULL THEN :BSTRT030.EMP_CODE:=:GLOBAL.CODE; :BSTRT030.NBT_EMP_DESC:=:GLOBAL.DES; end if; end; ------when validate item ----DECLARE L_DESC VARCHAR2(50); P_ERR VARCHAR2(100); BEGIN P_ERR:=NULL; L_DESC:= NULL; L_DESC:= GET_DESCRIPTION('EMPY',:BSTRT030.EMP_CODE,P_ERR); IF L_DESC IS NULL THEN :BSTRT030.EMP_CODE:= NULL; :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; ELSE :BSTRT030.NBT_EMP_DESC :=L_DESC; END IF; END;
-------key next item -GO_ITEM('BSTRT031.PART_NO'); ----------m_lov -keylistval -------declare l_var varchar2(50); l_err varchar2(100); begin
l_var := NULL;
get_MATLOV('MATR',l_var,l_err);
IF L_ERR IS NULL THEN IF :GLOBAL.CODE IS NOT NULL THEN :BSTRT031.MAT_CODE :BSTRT031.PART_NO := :GLOBAL.CODE; := :GLOBAL.NO;
:BSTRT031.NBT_PART_DESC := :GLOBAL.DES;
end if;
--go_item('BSTRT033.QTY'); end;
IF L_ERR IS NULL THEN :BSTRT031.NBT_PART_DESC := SUBSTR(L_DESC,12); :BSTRT031.MAT_CODE := TO_NUMBER(SUBSTR(L_DESC,1,10)); SELECT BASE_UNIT INTO :BSTRT031.NBT_UNIT FROM BCOMT002 WHERE PART_NO = :BSTRT031.PART_NO; ELSE :CONTENT.ERRORS := L_ERR; :BSTRT031.NBT_PART_DESC := NULL; RAISE FORM_TRIGGER_FAILURE; END IF;
END IF;
EXCEPTION WHEN NO_DATA_FOUND THEN :CONTENT.ERRORS := 'Part No. Is Not Valid'; Raise Form_Trigger_Failure;
END;
------------for parameter code doc_NO --------KEY_LISTVAL -------DECLARE L_VAR VARCHAR2(50); L_ERR VARCHAR2(100);
SET_LOV_COLUMN_PROPERTY ('G_LOV', 1, WIDTH, 0); SET_LOV_COLUMN_PROPERTY ('G_LOV', 2, WIDTH, 80); SET_LOV_COLUMN_PROPERTY ('G_LOV', 2, TITLE, 'Type No.');
IF L_ERR IS NOT NULL THEN :CONTENT.MESSAGES:=L_ERR; ELSE :CONTENT.MESSAGES:=' '; END IF; END; ------------KEY LIST VAL FOR PARTY CODE WITH PARAMETER ----------
IF :BSTRT030.DOC_TYPE = 'GAS' THEN SET_ITEM_PROPERTY('BSTRT030.PARTY_CODE',LOV_NAME,'L_LOV_PARTY _GAS'); LIST_VALUES; ELSIF :BSTRT030.DOC_TYPE = 'GRS' THEN
SET_ITEM_PROPERTY('BSTRT030.PARTY_CODE',LOV_NAME,'L_LOV_PARTY' ); LIST_VALUES; END IF; ----------------M_LOV ---select 'xxxxxxxxxx' matcode,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'partno, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'matdesc from dual --------GRN_NO KEYLISTVAL ---------IF :BSTRT030.DOC_TYPE = 'GAS' AND :BSTRT030.PARTY_CODE IS NOT NULL THEN SET_ITEM_PROPERTY('BSTRT030.GRN_NO',LOV_NAME,'L_LOV_GRN_GAS'); LIST_VALUES; POPULATE_GRN_DATA;
ELSIF :BSTRT030.DOC_TYPE = 'GRS' AND :BSTRT030.PARTY_CODE IS NOT NULL THEN SET_ITEM_PROPERTY('BSTRT030.GRN_NO',LOV_NAME,'L_LOV_GRN_GRS '); LIST_VALUES; POPULATE_GRN_DATA;
ELSIF :SYSTEM.BLOCK_STATUS = 'QUERY' THEN :CONTENT.ERRORS := 'Field Cannot be Modified'; RAISE FORM_TRIGGER_FAILURE; END IF; ---------PARAMETER CODE --------L_LOV_PARTY_GAS ----SELECT DISTINCT B.PARTY_FNAME||' '||B.PARTY_LNAME,C.PARTY_CODE FROM BCOMT001 B,BSTRT010 C WHERE B.PARTY_CODE = C.PARTY_CODE AND C.GRN_STATUS = 'A' ORDER BY B.PARTY_FNAME||' '||B.PARTY_LNAME,C.PARTY_CODE --------------L_LOV_GRN_GAS -------------
SELECT DOC_NO,DOC_TYPE FROM BSTRT010 WHERE GRN_STATUS = 'A' AND PARTY_CODE = :BSTRT030.PARTY_CODE ORDER BY DOC_NO --------block level trigger ---------pre record -Enable_Disable_Form;
---------pre insert -------DECLARE L_DOCNO NUMBER(8); P_ERR VARCHAR2(100); BEGIN /*IF :BSTRT030.STORE_ID IS NULL THEN :CONTENT.MESSAGES := 'STORE CAN NOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; */ --------------BY TAJINDER DT 25-AUG-06 -----------------------------
IF VALIDATE_HEADER(P_ERR) = 0 THEN :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; --------------BY TAJINDER DT 25-AUG-06 -----------------------------
:= NULL;
:BSTRT030.DOCNO_TEXT := L_DOCNO; :BSTRT030.DOC_STATUS := 'V'; :BSTRT030.DIS_STATUS := 'VALID'; :CONTENT.MESSAGES TO_CHAR( L_DOCNO); ELSE :CONTENT.ERRORS := P_ERR; := 'Document Saved VIDE NO. '||
END; ----------pre update -------DECLARE P_ERR VARCHAR2(100); BEGIN /*IF :BSTRT030.STORE_ID IS NULL THEN :CONTENT.MESSAGES := 'STORE CAN NOT BE NULL'; RAISE FORM_TRIGGER_FAILURE; */ --------------BY TAJIDNER DT 25-AUG-06 ----------------------------IF VALIDATE_HEADER(P_ERR) = 0 THEN :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; --------------BY TAJIDNER DT 25-AUG-06 ----------------------------END IF;--IF VALIDATE_HEADER(P_ERR) = 0 THEN :BSTRT030.MODIFIED_BY := :GLOBAL.USER_ID; :BSTRT030.MODIFIED_DATE := SYSDATE; :BSTRT030.TRN_FLAG := 'N';
BEGIN P_ERR:=NULL; :BSTRT030.NBT_STORE := GET_DESCRIPTION('STOR',:BSTRT030.STORE_ID,P_ERR); :BSTRT030.DIS_PARTY := GET_DESCRIPTION ('PRTY',:BSTRT030.PARTY_CODE,P_ERR); :NB_DIS_DOCTYPE := GET_DESCRIPTION('DTYP',:BSTRT030.DOC_TYPE,P_ERR); :BSTRT030.DIS_STATUS := GET_DOC_STATUS(:BSTRT030.DOC_STATUS); :BSTRT030.DOCNO_TEXT := :BSTRT030.DOC_NO; END;
SELECT BASE_UNIT INTO :BSTRT031.NBT_UNIT FROM BCOMT002 WHERE PART_NO = :BSTRT031.PART_NO; END;
--------------BY TAJINDER DT 25-AUG-06 ----------------------------IF VALIDATE_DETAIL(P_ERR) = 0 THEN :CONTENT.ERRORS := P_ERR; RAISE FORM_TRIGGER_FAILURE; END IF;--IF VALIDATE_DETAIL(P_ERR) = 0 THEN --------------BY TAJINDER DT 25-AUG-06 -----------------------------
:= 'V';
L_ERR VARCHAR2(100);
GO_BLOCK('PRODUCTPROCESS');
if :content.nbt_productcode is not null then :content.nbt_product_desc:=get_desc('PRODUCT',:content.nbt_productcode,P_ERR); end if; if p_err is not null then raise form_trigger_failure; end if;
BEGIN GO_BLOCK('PRODUCTPROCESS');
EXECUTE_QUERY; END;
EXECUTE_QUERY; -------------
BEGIN --check for blank process code if :PRODUCTPROCESS.processcode is null then :content.messages:='Enter Process Code'; raise form_trigger_failure; end if;
--check for unique process code SELECT COUNT(*) INTO L_COUNT FROM PRODUCTPRoCESS WHERE PROCESSCODE=:PRODUCTPROCESS.PROCESSCODE; IF l_COUNT>0 THEN :CONTENT.MESSAGES:=''' '||:PRODUCTPROCESS.PROCESSCODE||''' already exists. Enter another Process code'; raise form_trigger_failure; END IF;
--check for blank process description if :PRODUCTPROCESS.processdescription is null then :content.messages:='Enter Process Description'; raise form_trigger_failure; end if;
:PRODUCTPROCESS.PRODUCTCODE:=:CONTENT.NBT_PRODUCTCODE;
END;
GET_LOV1('PROCESSDESC',l_var,L_ERR); IF :GLOBAL.CODE IS NOT NULL THEN -- MESSAGE(LENGTH(:GLOBAL.DES));PAUSE; :PRODUCTPROCESS.PROCESSDESCRIPTION:= :GLOBAL.DES; -- :ITEMMASTER.NBT_PROCESSDES := :GLOBAL.DES; END IF;
END;
begin
GET_LOV1('PARTY',l_var,L_ERR); IF :GLOBAL.CODE IS NOT NULL THEN :PRODUCTMASTER.NBT_PARTY := :GLOBAL.DES; :PRODUCTMASTER.PARTYCODE := :GLOBAL.CODE; END IF;
end;
--------------when validate item --------DECLARE P_ERR VARCHAR2(100); BEGIN P_ERR:=NULL; IF :PRODUCTMASTER.PARTYCODE IS NOT NULL THEN :PRODUCTMASTER.NBT_PARTY := GET_DESC('PARTY', :PRODUCTMASTER.PARTYCODE,P_ERR); IF P_ERR IS NOT NULL THEN RAISE FORM_TRIGGER_FAILURE; END IF; END IF;
end; -------------post INSERT ---------INSERT INTO PRODUCTPROCESS(PROCESSCODE,PRODUCTCODE,PROCESSDESCRIPTION) VALUES(:PRODUCTMASTER.PRODUCTCODE || '01',:PRODUCTMASTER.PRODUCTCODE,'Not Applicable' ); -----------------------
CREATE TABLE BVERT001 ( DOC_NO DOC_DATE YEAR_NO DOC_TYPE CLIENT_NAME REMARKS STATUS ENTERED_BY ENTERED_DATE MODIFIED_BY MODIFIED_DATE AUTHORISED_BY AUTHORISED_DATE NUMBER(8) , DATE , NUMBER, VARCHAR2(50), VARCHAR2(100), VARCHAR2(500) , VARCHAR2(1), VARCHAR2(50), DATE, VARCHAR2(50), DATE, VARCHAR2(50), DATE,
YEAR_NO DOC_TYPE SR_NO MODULE_NAME FORM_NAME FORM_DESC FUNCTION_ID STATUS USER_NAME ENTERED_BY ENTERED_DATE MODIFIED_BY MODIFIED_DATE AUTHORISED_BY AUTHORISED_DATE
NUMBER, VARCHAR2(50), NUMBER , VARCHAR2(100), VARCHAR2(100), VARCHAR2(100), VARCHAR2(50), VARCHAR2(1), VARCHAR2(100), VARCHAR2(50), DATE, VARCHAR2(50), DATE, VARCHAR2(50), DATE,
========= INSERT INTO BVERT001( DOC_NO ,DOC_DATE,YEAR_NO,DOC_TYPE ,CLIENT_NAME,REMARKS,STATUS ) VALUES (1,'07-APR-11',2010,'MARS','MAHLE PRIVATE LIMITED','TEST','V');
INSERT INTO BPVRT001( DOC_NO ,DOC_DATE,YEAR_NO,DOC_TYPE ,CLIENT_NAME,REMARKS,STATUS ) VALUES (1,'06-APR-11',2010,'MARSA','SPM PRIVATE LIMITED','TESTA','V');
========= INSERT INTO BVERT002( DOC_NO ,DOC_DATE,YEAR_NO,DOC_TYPE ,SR_NO,MODULE_NAME, FORM_NAME,FORM_DESC,FUNCTION_ID,STATUS,USER_NAME,TRN_FLAG) VALUES (1,'25-MAR-11',2011,'HMM',1,'MASTERS','MISSCELENEOUS','DESCRIPTION TOTALLY','BBFAST300R01','V','ANAMIKA','Y');
--INSERT INTO BPVRT002( DOC_NO ,DOC_DATE,YEAR_NO,DOC_TYPE ,SR_NO,MODULE_NAME, FORM_NAME,FORM_DESC,FUNCTION_ID,STATUS,USER_NAME) VALUES (1,'25-MAR-11',2011,'HMM',2,'MASTERS','MISSCELENEOUS','DESCRIPTION TOTALLY','BBFAST300R01','V','AMIT'); -------ALTER TABLE BVERT002 ADD TRN_FLAG VARCHAR2(1);
ADD LOCATION VARCHAR2(1); ------------ALTER TABLE BVERT002 DROP COLUMN LOC_DATE ; ------ALTER TABLE BVERT002 ADD UNLOCK_DATE DATE;
-------ALTER TABLE BVERT002 ADD UNBLOCK_DATE DATE; -------ALTER TABLE BVERT002 DROP COLUMN LOCATION ; ---------ALTER TABLE BVERT002 ADD LOCATION VARCHAR2(500) ;
--------------
ATTENDANCE POPULATE CODE(for new row insertion in new table to see web ibs form bpayt475) ---DECLARE CURSOR CUR_EMP IS SELECT distinct cardno FROM BPAYT_ATTENDANCE WHERE ATTD_DATE BETWEEN '01-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR') AND LAST_DAY(:BPAYT475.POP_MONTH) ORDER BY CARDNO;
CURSOR CUR_DET (P_EMP NUMBER)IS SELECT a.EMP_CODE,b.cardno,b.ATTD_DATE,b.IN1, T_1,T_2,T_3,T_4,T_5,T_6,T_7,T_8,T_9,T_10,T_11,T_12,T_13,T_14,T_15,T_1 6,T_17,T_18,T_19,T_20,T_21,T_22,T_23,T_24,T_25,T_26,T_27,T_28,T_29,T_30,T_31 FROM BPAYT476 A,BPAYT_ATTENDANCE B WHERE A.EMP_CODE(+) = B.CARDNO AND A.EMP_CODE = P_EMP AND TO_CHAR(A.POP_MONTH,'MON-RR') = TO_CHAR(B.ATTD_DATE,'MON-RR') --and in1 is not null ORDER BY A.EMP_CODE,B.ATTD_DATE;
FOR REC IN CUR_EMP LOOP L_SR := L_SR+1; INSERT INTO BPAYT476(DOC_ID,SR_NO,EMP_CODE,POP_MONTH,T_1,T_2,T_3,T_4,T_5,T_6, T_7 ,T_8,T_9,T_10,T_11,T_12,T_13,T_14,T_15,T_16,T_17,T_18,T_19,T_20,T_21,T_2 2,T_23,T_24,T_25,T_26,T_27,T_28,T_29,T_30,T_31) VALUES (:BPAYT475.DOC_ID,L_SR,REC.CARDNO,:BPAYT475.POP_MONTH,'N','N','N','N',' N','N','N' ,'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N'); COMMIT; END LOOP;
FOR REC IN CUR_DET(:BPAYT476.EMP_CODE) LOOP IF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '01' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_1 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '02' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_2 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '03' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_3 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '04' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_4 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '05' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_5 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '06' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_6 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '07' AND
TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_7 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '08' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_8 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '09' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_9 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '10' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_10 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '11' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_11 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '12' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_12 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '13' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_13 := 'Y';
ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '14' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_14 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '15' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_15 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '16' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_16 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_17 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_18 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_19 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN
:BPAYT476.T_20 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_21 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_22 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_23 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_24 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_25 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_26 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND
TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_27 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_28 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_29 := 'Y'; ELSIF REC.IN1 IS NOT NULL AND TO_CHAR(REC.ATTD_DATE,'DD') = '17' AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN :BPAYT476.T_30 := 'Y'; END IF; END LOOP; NEXT_RECORD; END LOOP; COMMIT_FORM; FIRST_RECORD;
END;
----------------
DECLARE CURSOR CUR(P_EMP NUMBER) IS /** SELECT DISTINCT A.CARDNO,A.PUNCH_DATE,A.ATTD_DATE,A.IN1,A.OUT1,A.TOTAL_DURATI ON ,A.SHIFT_CODE,A.DAY_STATUS, B.FR_SHIFT_TIME,B.TO_SHIFT_TIME,A.EMP_CODE FROM BPAYT_ATTENDANCE A, BPAYT003 B WHERE A.SHIFT_CODE = B.SHIFT_CODE AND A.EMP_CODE = P_EMP AND A.ATTD_DATE BETWEEN '01-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR') AND LAST_DAY(:BPAYT475.POP_MONTH) AND CARDNO = 1005 ORDER BY CARDNO; **/
SELECT a.EMP_CODE,b.cardno,b.ATTD_DATE,b.IN1,b.shift_from,b.shift_to, T_1,T_2,T_3,T_4,T_5,T_6,T_7,T_8,T_9,T_10,T_11,T_12,T_13,T_14,T_15,T_1 6,T_17,T_18,T_19,T_20,T_21,T_22,T_23,T_24,T_25,T_26,T_27,T_28,T_29,T_30,T_31 FROM BPAYT476 A,BPAYT_ATTENDANCE B WHERE A.EMP_CODE(+) = B.CARDNO
AND A.EMP_CODE = P_EMP AND TO_CHAR(A.POP_MONTH,'MON-RR') = TO_CHAR(B.ATTD_DATE,'MON-RR') --and in1 is not null ORDER BY A.EMP_CODE,B.ATTD_DATE;
L_SR NUMBER(10):=0; L_ROWS NUMBER(10):=0; BEGIN COMMIT_FORM; L_ROWS := :SYSTEM.TRIGGER_RECORD; -FIRST_RECORD; FOR I IN 1..L_ROWS LOOP FOR REC IN CUR(:BPAYT476.EMP_CODE) LOOP IF :BPAYT476.T_1 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE =REC.SHIFT_from, =REC.SHIFT_to = '01'
ELSIF :BPAYT476.T_1 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '01-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); END IF; =NULL, =NULL = '01'
IF :BPAYT476.T_2 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE = '02'
SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '02-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to
ELSIF :BPAYT476.T_2 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '02-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '02'
IF :BPAYT476.T_3 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '03-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '03'
ELSIF :BPAYT476.T_3 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE =NULL, =NULL = '03'
END IF;
IF :BPAYT476.T_4 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '04-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '04'
ELSIF :BPAYT476.T_4 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE = '04'
SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '04-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL
END IF;
IF :BPAYT476.T_5 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '05-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '05'
ELSIF :BPAYT476.T_5 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '05-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '05'
END IF;
IF :BPAYT476.T_6 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 =REC.SHIFT_from, =REC.SHIFT_to = '06'
ELSIF :BPAYT476.T_6 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '06-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '06'
END IF;
AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '07-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to
ELSIF :BPAYT476.T_7 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '07-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '07'
END IF;
IF :BPAYT476.T_8 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '08-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '08'
ELSIF :BPAYT476.T_8 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 =NULL, = '08'
OUT1 WHERE
=NULL
END IF;
IF :BPAYT476.T_9 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '09-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '09'
ELSIF :BPAYT476.T_9 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '09-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '09'
END IF;
IF :BPAYT476.T_10 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE =REC.SHIFT_from, =REC.SHIFT_to = '10'
ELSIF :BPAYT476.T_10 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '10-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '10'
END IF;
UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '11-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to
ELSIF :BPAYT476.T_11 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '11-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '11'
END IF;
IF :BPAYT476.T_12 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '12-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '12'
ELSIF :BPAYT476.T_12 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 =NULL, =NULL = '12'
END IF;
IF :BPAYT476.T_13 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '13-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '13'
AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '13-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL
END IF;
IF :BPAYT476.T_14 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE =REC.SHIFT_from, =REC.SHIFT_to = '14'
ELSIF :BPAYT476.T_14 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '14-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '14'
END IF;
IF :BPAYT476.T_15 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE = '15'
SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '15-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to
ELSIF :BPAYT476.T_15 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '15-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '15'
END IF;
IF :BPAYT476.T_16 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '16-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '16'
ELSIF :BPAYT476.T_16 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 =NULL, =NULL = '16'
END IF;
IF :BPAYT476.T_17 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '17-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '17'
AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '17-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL
END IF;
IF :BPAYT476.T_18 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE =REC.SHIFT_from, =REC.SHIFT_to = '18'
ELSIF :BPAYT476.T_18 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '18-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '18'
END IF;
UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '19-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to
ELSIF :BPAYT476.T_19 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '19-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '19'
END IF;
IF :BPAYT476.T_20 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '20-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '20'
ELSIF :BPAYT476.T_20 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 =NULL, = '20'
OUT1 WHERE
=NULL
END IF;
IF :BPAYT476.T_21 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '21-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '21'
= '21'
UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '21-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL
END IF;
IF :BPAYT476.T_22 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE =REC.SHIFT_from, =REC.SHIFT_to = '22'
ELSIF :BPAYT476.T_22 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '22-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '22'
END IF;
IF :BPAYT476.T_23 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE = '23'
SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '23-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to
ELSIF :BPAYT476.T_23 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '23-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '23'
END IF;
IF :BPAYT476.T_24 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '24-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '24'
ELSIF :BPAYT476.T_24 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE =NULL, =NULL = '24'
END IF;
IF :BPAYT476.T_25 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '25-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '25'
UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '25-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL
END IF;
IF :BPAYT476.T_26 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '26-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '26'
ELSIF :BPAYT476.T_26 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '26-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '26'
END IF;
IF :BPAYT476.T_27 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 =REC.SHIFT_from, = '27'
OUT1 WHERE
=REC.SHIFT_to
ELSIF :BPAYT476.T_27 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '27-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '27'
END IF;
IF :BPAYT476.T_28 = 'Y'
= '28'
UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '28-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to
ELSIF :BPAYT476.T_28 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '28-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '28'
END IF;
IF :BPAYT476.T_29 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '29-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '29'
ELSIF :BPAYT476.T_29 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET = '29'
=NULL, =NULL
END IF;
IF :BPAYT476.T_30 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '30-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =REC.SHIFT_from, =REC.SHIFT_to = '30'
ELSIF :BPAYT476.T_30 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '30-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '30'
END IF;
IF :BPAYT476.T_31 = 'Y' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE =REC.SHIFT_from, =REC.SHIFT_to = '31'
ELSIF :BPAYT476.T_31 = 'N' AND TO_CHAR(REC.ATTD_DATE,'DD') AND TO_CHAR(REC.ATTD_DATE,'MONRR')=TO_CHAR(:BPAYT476.POP_MONTH,'MON-RR') THEN UPDATE BPAYT_ATTENDANCE SET IN1 OUT1 WHERE CARDNO =REC.EMP_CODE AND ATTD_DATE = '31-'|| TO_CHAR(:BPAYT475.POP_MONTH,'MON-RR'); =NULL, =NULL = '31'
END IF;
COMMIT; END IF; END LOOP; --NEXT_RECORD; END LOOP; COMMIT_FORM; -FIRST_RECORD;
END;
----------------CODE FOR VALIDATE ITEM (EK HI PARTY_CODE ENTRY NI HOGI) -------WHEN VALIDATE ITEM --------DECLARE P_ERR VARCHAR2(100); L_DESC VARCHAR2(100);
IF :PARAMETER.P_TYPE = 'COMPANY' THEN SELECT MAX(PARTY_FNAME) INTO L_DESC FROM BCOMT001 WHERE PARTY_CODE = :BCOMT001.PARTY_CODE;
IF NVL(:GLOBAL.MERGE,'N') = 'Y' THEN GET_PARTY_DATA(:BCOMT001.PARTY_CODE); END IF; --IF NVL(:GLOBAL.MERGE,'N') = 'N' THEN ELSE SELECT MAX(PARTY_FNAME) INTO L_DESC FROM BCOMT001 WHERE PARTY_CODE = :BCOMT001.PARTY_CODE; END IF; --IF :PARAMETER.P_TYPE = 'COMPANY' THEN
IF L_DESC IS NOT NULL THEN :CONTENT.MESSAGES := 'RECORD ALREADY EXISTS..'||L_DESC; RAISE FORM_TRIGGER_FAILURE; ELSE
:BCOMT001.CNSG_CODE := :BCOMT001.PARTY_CODE; :CONTENT.MESSAGES END IF; END IF; --IF :BCOMT001.PARTY_CODE IS NOT NULL THEN END IF; --IF :system.BLOCK_STATUS<>'QUERY' THEN END; ---------KEY LIST VAL -------declare L_VAR varchar2(50); L_ERR VARCHAR2(100); begin L_VAR := ' PARTY_TYPE = ''C'' '; get_newlov('PRTY',L_VAR,L_ERR); IF :GLOBAL.CODE IS NOT NULL THEN :BCOMT001.PARTY_CODE := :GLOBAL.CODE; -:BCOMT001.PARTY_FNAME := :GLOBAL.DES; END IF; IF L_ERR IS NOT NULL THEN :CONTENT.MESSAGES:=L_ERR; ELSE :CONTENT.MESSAGES:=''; := '';
END IF; end; -------CODE FOR(POULATE CODE FOR DATE BETWEEN TOW DATES) --------PROCEDURE POPULATE_DATA_NEW IS BEGIN
IF :CONTENT.NBT_SEARCH = 'E' THEN GO_BLOCK('BPAYT005'); SET_BLOCK_PROPERTY('BPAYT005',DEFAULT_WHERE,'ATTD_DATE BETWEEN :CONTENT.NBT_DATE AND :CONTENT.NBT_DATE1 AND EMP_CODE IN (SELECT EMP_CODE FROM BPAYT030 WHERE comp_locn= nvl(:content.locn_id,comp_locn) AND EMP_CODE =nvl(:content.EMP_CODE,EMP_CODE) ) AND (IN_TIME IS NOT NULL OR OUT_TIME IS NOT NULL) ORDER BY EMP_CODE,IN_TIME DESC'); ELSIF :CONTENT.NBT_SEARCH = 'D' THEN GO_BLOCK('BPAYT005'); SET_BLOCK_PROPERTY('BPAYT005',DEFAULT_WHERE,'ATTD_DATE BETWEEN :CONTENT.NBT_DATE AND :CONTENT.NBT_DATE1
AND EMP_CODE IN (SELECT EMP_CODE FROM BPAYT030 WHERE comp_locn= nvl(:content.locn_id,comp_locn) AND EMP_CODE =nvl(:content.EMP_CODE,EMP_CODE) ) AND (IN_TIME IS NOT NULL OR OUT_TIME IS NOT NULL) ORDER BY ATTD_DATE,IN_TIME DESC'); END IF; EXECUTE_QUERY; first_RECORD;
IF TO_NUMBER(TO_CHAR(:CONTENT.NBT_DATE,'D')) ='1' THEN SET_ALERT_PROPERTY('G_ALERT',ALERT_MESSAGE_TEXT,'Do You Want To Populate Attendace On Sunday '); IF SHOW_ALERT('G_ALERT') =88 THEN
BEGIN IF :NBT_SHIFT IS NOT NULL THEN SELECT FR_SHIFT_TIME ,TO_SHIFT_TIME INTO :CONTENT.NBT_INTIME,:CONTENT.NBT_OTIME FROM BPAYT003 WHERE SHIFT_CODE = :NBT_SHIFT; END IF;
IF :CONTENT.NBT_INTIME IS NOT NULL OR :CONTENT.NBT_OTIME IS NOT NULL THEN GO_BLOCK('BPAYT005'); LAST_RECORD; L_NO := :SYSTEM.TRIGGER_RECORD; FIRST_RECORD; FOR CUR IN 1..L_NO LOOP
NEXT_RECORD; END LOOP; FIRST_RECORD; END IF;--IF :CONTENT.NBT_TIME IS NOT NULL THEN
PROCEDURE POPULATE_LOCNDATA IS
CURSOR CUR_USER IS SELECT ROWNUM LIST_IND, B.MAPPING_ID,B.MAPPING_DESC FROM BPAYT001 A,BPAYT0012 B WHERE A.YR_STATUS = 'O' ORDER BY MAPPING_DESC;
L_INDEX NUMBER(2) := 0;
BEGIN CLEAR_LIST ('CONTENT.LOCN_ID'); FOR CUR_REC IN CUR_USER LOOP ADD_LIST_ELEMENT ('CONTENT.LOCN_ID', CUR_REC.LIST_IND, CUR_REC.MAPPING_DESC, CUR_REC.MAPPING_ID); END LOOP;
EXCEPTION WHEN OTHERS THEN NULL; END; ------CODE FOR TIME DIFFERENCE ---------PROCEDURE TIME_DIFF IS
l_in l_out
number;
number;
l_duration number; hour m_in minute s_in second number; number; number; number; number;
t_duration varchar2(20); begin IF :BPAYT005.IN_TIME IS NOT NULL AND :BPAYT005.OUT_TIME IS NOT NULL THEN
l_duration:=(:BPAYT005.out_time - :BPAYT005.in_time);
l_in:=l_duration*24; hour:=trunc(l_in); m_in:=(l_in-hour)*60; minute:=trunc(m_in); s_in:=(m_in-minute)*60; second:=round(s_in); IF second = 60 THEN second := 0; minute := minute +1; END IF; t_duration:=hour||':'||minute||':'||second;
:BPAYT005.DURATION :=t_duration; END IF; END; --------LEAVE DATE -----FUNCTION LEAVE_DATE RETURN NUMBER IS L_COUNT NUMBER(2) :=0; BEGIN
L_COUNT :=0;
IF :BPAYT005.ATTD_DATE IS NOT NULL AND :BPAYT005.EMP_CODE IS NOT NULL THEN SELECT COUNT(EMP_CODE) INTO L_COUNT FROM BPAYT065 WHERE :BPAYT005.ATTD_DATE BETWEEN FROM_DATE AND TO_DATE AND EMP_CODE = :BPAYT005.EMP_CODE AND STATUS ='A';
RETURN(L_COUNT); EXCEPTION WHEN OTHERS THEN RETURN(L_COUNT); END; -------LATE TIME -------
L_LATETIME NUMBER ; L_SHIFTTIME DATE; L_INTIME DATE; L_COUNT NUMBER :=0; BEGIN
--SELECT A.SHIFT_CODE,TO_CHAR(A.FR_SHIFT_TIME,'HH24:MI') SHIFT_TIME,A.LOCN_ID,A.SHIFT_FLAG FROM BPAYT003 A --WHERE A.SHIFT_CODE IN (SELECT SHIFT_CODE FROM BPAYT030 B) ; SELECT COUNT(*) INTO L_COUNT FROM BPAYT005 WHERE ATTD_DATE=:CONTENT.NBT_DATE AND IN_TIME IS NOT NULL;
IF L_COUNT > 0 THEN FOR I IN 1..L_COUNT LOOP SELECT A.FR_SHIFT_TIME SHIFT_TIME INTO L_SHIFTTIME FROM BPAYT003 A WHERE A.SHIFT_CODE IN (SELECT SHIFT_CATG FROM BPAYT030 B WHERE EMP_CODE=P_EMPCODE);
--MESSAGE(P_EMPCODE);PAUSE; SELECT IN_TIME INTO L_INTIME FROM BPAYT005 WHERE IN_TIME IS NOT NULL AND EMP_CODE = P_EMPCODE;
END; --------