Advertisement
windrunner

plsql_cursor_function

Oct 15th, 2023 (edited)
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.99 KB | Source Code | 0 0
  1.  
  2. -- Cursor
  3. SET SERVEROUTPUT ON;
  4. DECLARE
  5. ename employee.ename%TYPE;
  6. eid employee.eid%TYPE;
  7. esal employee.esal%TYPE;
  8. edept employee.edept%TYPE;
  9.  
  10. CURSOR emp_cursor IS
  11. SELECT eid, esal, edept FROM employee;
  12.  
  13. BEGIN
  14. OPEN emp_cursor;
  15.  
  16. LOOP
  17. FETCH emp_cursor INTO eid, esal, edept;
  18. EXIT WHEN emp_cursor%NOTFOUND;
  19. DBMS_OUTPUT.put_line(eid || ' ' || esal || ' ' || edept);
  20. END LOOP;
  21.  
  22. CLOSE emp_cursor;
  23.  
  24. END;
  25. /
  26.  
  27. --Cursor 1
  28.  
  29. CREATE TABLE employee(
  30. eid VARCHAR2(5) PRIMARY KEY,
  31. ename VARCHAR2(30),
  32. esal NUMBER,
  33. edept VARCHAR2(10)
  34. );
  35.  
  36. -- Insert records
  37.         INSERT INTO employee VALUES('E01', 'Rajat', 14000, 'Sales');
  38.         INSERT INTO employee VALUES('E02', 'Kamal', 24000, 'IT');
  39.         INSERT INTO employee VALUES('E03', 'Nilaj', 40000, 'Accounts');
  40.         INSERT INTO employee VALUES('E04', 'Suman', 38000, 'HR');
  41.         INSERT INTO employee VALUES('E05', 'Ayush', 74000, 'Sales');
  42. DECLARE
  43.     var_empid employee.eid%TYPE;
  44.     var_ename employee.ename%TYPE;
  45.     var_sal employee.esal%TYPE;
  46.    
  47.     CURSOR EMP_CURSOR IS
  48.     SELECT eid, ename, esal FROM employee;
  49.    
  50. BEGIN
  51. OPEN EMP_CURSOR;
  52. LOOP
  53.     FETCH EMP_CURSOR INTO var_empid, var_ename, var_sal;
  54.     EXIT WHEN EMP_CURSOR%NOTFOUND;
  55.     IF(var_sal>30000) THEN
  56.         DBMS_OUTPUT.put_line(var_empid || ' ' || var_ename || ' ' || var_sal);
  57.     ELSE
  58.         DBMS_OUTPUT.put_line(var_ename || 'Salary is less than 30000' );
  59.     END IF;
  60. END LOOP;
  61. CLOSE EMP_CURSOR;
  62. DBMS_OUTPUT.put_line('Done');
  63. END;
  64. /
  65.  
  66. --Function
  67.  
  68. DECLARE
  69. n INTEGER :=&n;
  70. cnt INTEGER :=0;
  71. i INTEGER;
  72. flag INTEGER;
  73. -- flag = 1 means 'n' is prime otherwise 'n' is non-prime
  74. FUNCTION is_prime(n IN INTEGER)
  75. RETURN INTEGER
  76. IS
  77. f1 INTEGER;
  78. n1 INTEGER;
  79. r INTEGER;
  80. k INTEGER;
  81.  
  82. BEGIN
  83. n1 := FLOOR(n/2);
  84. f1 := 1; -- f1=1 means the given number is prime
  85. FOR k IN 2..n1
  86. LOOP
  87. r:= MOD(n,k);
  88. IF r=0 THEN
  89. f1:=0;
  90. EXIT;
  91. END IF;
  92. END LOOP;
  93. RETURN(f1);
  94. END;
  95.  
  96. -- Main program starts
  97. BEGIN
  98. DBMS_OUTPUT.put_line('Prime numbers<= ' || n || '==>');
  99. FOR i IN 2..n
  100. LOOP
  101.     flag := is_prime(i);
  102.         IF(flag=1) THEN
  103.             DBMS_OUTPUT.put(i || ' ');
  104.             cnt := cnt+1;
  105.             END IF;
  106. END LOOP;
  107. DBMS_OUTPUT.put_line(' ');
  108. DBMS_OUTPUT.put_line('Total prime numbers=' || cnt);
  109. END;
  110. /
  111.  
  112. -- Function 1
  113. CREATE OR REPLACE FUNCTION find_area (Len IN NUMBER, Wid IN NUMBER)
  114. RETURN NUMBER
  115. AS
  116. varea NUMBER;
  117. BEGIN
  118. varea:=Len*Wid;
  119. RETURN varea;
  120. END;
  121. /  
  122. -- calling the function
  123. -- a special one-row, one-column table present by default in all Oracle databases.
  124. SELECT find_area(5,20) FROM dual;
  125.  
  126. -- Array
  127. DECLARE
  128.     TYPE aarrays IS VARRAY(5) OF INTEGER;
  129.     s INTEGER :=0;
  130.     av NUMBER (5,2);
  131.     sdev NUMBER(5,2);
  132.     i INTEGER;
  133.     a aarrays;
  134.     n INTEGER;
  135.     temp INTEGER :=0;
  136.     res INTEGER :=0;
  137. BEGIN
  138.     a:= aarrays(50,40,30,20,10);
  139.     n:= a.COUNT();
  140.     FOR i IN 1..5
  141.     LOOP
  142.     s:= s+a(i);
  143.     END LOOP;
  144.    
  145.     av:= s/n;
  146.    
  147.     FOR i IN 1..5
  148.     LOOP
  149.     temp := POWER((s-av),2);
  150.     res := res+temp;
  151.     END LOOP;
  152.     res := res/n;
  153.     sdev := res;
  154.     DBMS_OUTPUT.put_line('Sum= '|| s || 'Average= ' || av || 'Sdev= ' || sdev);
  155.    
  156. END;
  157. /
  158.  
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement