Advertisement
4doorsmorehories

Cursors

Jan 3rd, 2023
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 5.96 KB | Source Code | 0 0
  1. CEC@asuiin-te-system:~$ sudo bash
  2. [sudo] password FOR CEC:
  3. root@asuiin-te-system:/home/CEC# sqlplus sys AS sysdba
  4.  
  5. SQL*Plus: RELEASE 11.2.0.2.0 Production ON Tue Jan 3 10:38:46 2023
  6.  
  7. Copyright (c) 1982, 2011, Oracle.  ALL rights reserved.
  8.  
  9. Enter password:
  10.  
  11. Connected TO:
  12. Oracle Database 11g Express Edition RELEASE 11.2.0.2.0 - 64bit Production
  13.  
  14. SQL> SET serveroutput ON;
  15. SQL> CREATE TABLE cust(Name VARCHAR(10), salary int);
  16.  
  17. TABLE created.
  18.  
  19. SQL> DESC cust;
  20.  Name                      NULL?    TYPE
  21.  ----------------------------------------- -------- ----------------------------
  22.  NAME                           VARCHAR2(10)
  23.  SALARY                         NUMBER(38)
  24.  
  25. SQL> INSERT INTO cust VALUES('Arun',1000);
  26.  
  27. 1 ROW created.
  28.  
  29. SQL> INSERT INTO cust VALUES('Klop',0);
  30.  
  31. 1 ROW created.
  32.  
  33. SQL> INSERT INTO cust VALUES('Pep',1250);
  34.  
  35. 1 ROW created.
  36.  
  37. SQL> INSERT INTO cust VALUES('Zidane',3002);
  38.  
  39. 1 ROW created.
  40.  
  41. SQL> INSERT INTO cust VALUES('Kante',0001);
  42.  
  43. 1 ROW created.
  44.  
  45. SQL> INSERT INTO cust VALUES('Rono',777);
  46.  
  47. 1 ROW created.
  48.  
  49. SQL> SELECT * FROM cust;
  50.  
  51. NAME           SALARY
  52. ---------- ----------
  53. Arun         1000
  54. Klop            0
  55. Pep      1250
  56. Zidane       3002
  57. Kante           1
  58. Rono          777
  59.  
  60. 6 rows selected.
  61.  
  62. SQL> DECLARE
  63.   2  total_rows NUMBER(2);
  64.   3  BEGIN
  65.   4     UPDATE cust
  66.   5     SET salary=salary+500;
  67.   6     IF sql%notfound THEN
  68.   7         DBMS_OUTPUT.put_line('No customers selected');
  69.   8     elif sql%found THEN
  70.   9         total_rows :=sql%rowcount;
  71.  10         DBMS_OUTPUT.put_line(total_rows || 'Customers Selected');
  72.  11     END IF;
  73.  12  END;
  74.  13  /
  75.     elif sql%found THEN
  76.          *
  77. ERROR AT line 8:
  78. ORA-06550: line 8, column 7:
  79. PLS-00103: Encountered the symbol "SQL" WHEN expecting one OF the following:
  80. := . ( @ % ;
  81. ORA-06550: line 12, column 4:
  82. PLS-00103: Encountered the symbol ";" WHEN expecting one OF the following:
  83. IF
  84.  
  85.  
  86. SQL> DECLARE
  87.   2  total_rows NUMBER(2);
  88.   3  BEGIN
  89.   4     UPDATE cust
  90.   5     SET salary+=500;
  91.   6     IF sql%notfound THEN
  92.   7         DBMS_OUTPUT.put_line('No Customers selected');
  93.   8     ELSIF sql%found THEN
  94.   9         total_rows ;=sql%rowcount;
  95.  10         DBMS_OUTPUT.put_line(total_rows || ' Customers Selected ');
  96.  11     END IF;
  97.  12  END;
  98.  13  /
  99.     SET salary+=500;
  100.               *
  101. ERROR AT line 5:
  102. ORA-06550: line 5, column 12:
  103. PL/SQL: ORA-00927: missing equal SIGN
  104. ORA-06550: line 4, column 2:
  105. PL/SQL: SQL Statement ignored
  106. ORA-06550: line 9, column 15:
  107. PLS-00103: Encountered the symbol "=" WHEN expecting one OF the following:
  108. ( BEGIN CASE DECLARE ELSE ELSIF END EXIT FOR GOTO IF LOOP MOD
  109. NULL PRAGMA RAISE RETURN SELECT UPDATE WHILE WITH
  110. <an identifier> <a double-quoted delimite
  111. ORA-06550: line 10, column 3:
  112. PLS-00103: Encountered the symbol "DBMS_OUTPUT"
  113. ORA-06550: line 10, column 61:
  114. PLS-00103: Encountered the symbol ";" WHEN expecting one OF the following:
  115. . ( , * % & - + / AT MOD remainder rem <an identifier>
  116. <a double-quoted delimited-identifier> <an exponent (**)> AS
  117. FROM INTO || multiset BULK
  118.  
  119.  
  120. SQL> DECLARE
  121.   2  total_rows NUMBER(2);
  122.   3  BEGIN
  123.   4  UPDATE cust
  124.   5  SET salary+=500;
  125.   6  ;
  126.   7  /
  127. SET salary+=500;
  128.           *
  129. ERROR AT line 5:
  130. ORA-06550: line 5, column 11:
  131. PL/SQL: ORA-00927: missing equal SIGN
  132. ORA-06550: line 4, column 1:
  133. PL/SQL: SQL Statement ignored
  134. ORA-06550: line 6, column 1:
  135. PLS-00103: Encountered the symbol ";" WHEN expecting one OF the following:
  136. ( BEGIN CASE DECLARE END EXCEPTION EXIT FOR GOTO IF LOOP MOD
  137. NULL PRAGMA RAISE RETURN SELECT UPDATE WHILE WITH
  138. <an identifier> <a double-quoted delimited-
  139.  
  140.  
  141. SQL> DECLARE
  142.   2  total_rows NUMBER(2);
  143.   3  BEGIN
  144.   4  UPDATE cust
  145.   5  SET salary = salary + 500;
  146.   6  IF sql%notfound THEN
  147.   7  DBMS_OUTPUT.put_line('No Customers selected');
  148.   8  ELSIF sql%found THEN
  149.   9  total_rows :=sql%rowcount;
  150.  10  DBMS_OUTPUT.put_line(total_rows || 'Customers selscted');
  151.  11  END IF;
  152.  12  END;
  153.  13  /
  154. 6Customers selscted
  155.  
  156. PL/SQL PROCEDURE successfully completed.
  157.  
  158. SQL> SELECT * FROM cust;
  159.  
  160. NAME           SALARY
  161. ---------- ----------
  162. Arun         1500
  163. Klop          500
  164. Pep      1750
  165. Zidane       3502
  166. Kante         501
  167. Rono         1277
  168.  
  169. 6 rows selected.
  170.  
  171. SQL> DECLARE
  172.   2  c_name FROM cust.name%TYPE;
  173.   3  c_salary FROM cust.salary%TYPE;
  174.   4  CURSOR c1 IS SELECT name,salary FROM cust;
  175.   5  BEGIN
  176.   6     OPEN c1;
  177.   7     LOOP
  178.   8     FETCH c1 INTO c_name,c_salary;
  179.   9     EXIT WHEN c1%notfound;
  180.  10     DBMS_OUTPUT.put_line(c_name||' has salary of '||c_salary||'Rupees');
  181.  11     END LOOP;
  182.  12     CLOSE c1;
  183.  13  END;
  184.  14  /
  185. c_name FROM cust.name%TYPE;
  186.        *
  187. ERROR AT line 2:
  188. ORA-06550: line 2, column 8:
  189. PLS-00103: Encountered the symbol "FROM" WHEN expecting one OF the following:
  190. CONSTANT EXCEPTION <an identifier>
  191. <a double-quoted delimited-identifier> TABLE LONG double REF
  192. CHAR TIME TIMESTAMP INTERVAL DATE binary national character
  193. nchar
  194.  
  195.  
  196. SQL> DECLARE
  197.   2  c_name cust.name%TYPE;
  198.   3  c_salary cust.salary%TYPE;
  199.   4  CURSOR c1 IS SELECT name, salary FROM cust;
  200.   5  BEGIN
  201.   6      OPEN c1;
  202.   7     LOOP
  203.   8     FETCH c1 INTO c_name,c_salary;
  204.   9     EXIT WHEN c1%notfound;
  205.  10     DBMS_OUTPUT.put_line(c_name||' has salary of '||c_salary||'Rupees');
  206.  11     END LOOP;
  207.  12     CLOSE c1;
  208.  13     CLOSE c1;
  209.  14   END;
  210.  15  /
  211. Arun has salary OF 1500Rupees
  212. Klop has salary OF 500Rupees
  213. Pep has salary OF 1750Rupees
  214. Zidane has salary OF 3502Rupees
  215. Kante has salary OF 501Rupees
  216. Rono has salary OF 1277Rupees
  217. DECLARE
  218. *
  219. ERROR AT line 1:
  220. ORA-01001: invalid CURSOR
  221. ORA-06512: AT line 13
  222.  
  223.  
  224. SQL> DECLARE
  225.   2   c_name cust.name%TYPE;
  226.   3   c_salary cust.salary%TYPE;
  227.   4   CURSOR c1 IS SELECT name, salary FROM cust;
  228.   5   BEGIN
  229.   6      OPEN c1;
  230.   7     LOOP
  231.   8     FETCH c1 INTO c_name,c_salary;
  232.   9     EXIT WHEN c1%notfound;
  233.  10     DBMS_OUTPUT.put_line(c_name||' has salary of '||c_salary||'Rupees');
  234.  11     END LOOP;
  235.  12     CLOSE c1;
  236.  13   END;
  237.  14  /
  238. Arun has salary OF 1500Rupees
  239. Klop has salary OF 500Rupees
  240. Pep has salary OF 1750Rupees
  241. Zidane has salary OF 3502Rupees
  242. Kante has salary OF 501Rupees
  243. Rono has salary OF 1277Rupees
  244.  
  245. PL/SQL PROCEDURE successfully completed.
  246.  
  247. SQL>
  248.  
  249.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement