Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

त्रुटि:काउंटर को असाइनमेंट के लक्ष्य के रूप में संदर्भित करें - PL/SQL

वास्तव में आपको पास्कल का त्रिकोण देने के लिए पिछले उत्तरों को संशोधित करना, जिसका आपने उल्लेख किया था कि आप एक टिप्पणी में प्रयास कर रहे थे:

set serveroutput on format wrapped
declare
   n number(2):=5;
begin
  for a in 1..n loop
    for b in 1..n-a loop
      dbms_output.put(' ');
    end loop;
    for c in 1..2*a-1 loop
      dbms_output.put('*');
    end loop;
    dbms_output.new_line;
  end loop;
end;
/

    *
   ***
  *****
 *******
*********

PL/SQL procedure successfully completed.

आपके दोनों dbms_output.put_line कॉल केवल dbms_output.put होने चाहिए , क्योंकि वह प्रत्येक * . को प्रिंट कर रहा था अपने आप में एक लाइन पर। लेकिन आपको हर बार a . के आसपास एक लाइन ब्रेक की आवश्यकता होती है लूप, इसलिए मैंने एक dbms_output.newline जोड़ा है उसके अंत में। आप temp . को भी घटा रहे थे b . के अंदर लूप, जिसका अर्थ था कि यह (n-1) . के बजाय शून्य था दूसरी बार a . के आसपास फंदा; लेकिन आपको वास्तव में एक अलग temp . की आवश्यकता नहीं है वेरिएबल बिल्कुल भी जैसा कि हमेशा (n-a)+1 . जैसा ही होता है और +1 बस हर लाइन पर एक अतिरिक्त जगह डालता है। (मैंने a . भी बनाया है लूप 1..n जैसा कि मुझे लगता है कि आप n . का मान बदलना चाहते हैं बाद में केवल एक ही स्थान पर)। n := 8 . के साथ :

       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************

महत्वपूर्ण रूप से हालांकि आपको set serveroutput on format wrapped , अन्यथा प्रमुख स्थान जो आप b . में उत्पन्न कर रहे हैं लूप को छोड़ दिया जाता है।

आप इसे सादे SQL में भी कर सकते हैं, हालांकि आपको 5 . की आपूर्ति करने की आवश्यकता है दो बार, या बाइंड या प्रतिस्थापन चर का उपयोग करें:

select lpad(' ', 5 - level, ' ') || rpad('*', (level * 2) - 1, '*') as pascal
from dual
connect by level <= 5

PASCAL
------------------------------
    *
   ***
  *****
 *******
*********

आपका b और c लूप सिर्फ एक मैनुअल lpad कर रहे हैं सच में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle info_schema.tables के बराबर

  2. Oracle डेटाबेस TNS कुंजी 'डेटा स्रोत' के लिए मान की लंबाई '128' की सीमा से अधिक है

  3. Oracle SQL - एक निर्दिष्ट महीने के लिए दो तिथियों के बीच दिनों की संख्या प्राप्त करें

  4. Ansible playbook के साथ Oracle SQL स्क्रिप्ट चलाना

  5. दूषित Oracle निर्यात फ़ाइल (.dmp) की मरम्मत कैसे करें?