SOQL For Loop అంటే ఏమిటి? | Salesforce Apex Telugu

SOQL For Loop అంటే ఏమిటి? Salesforce Records ని Loop చేయడం ఎలా? | Apex Tutorial in Telugu – Day 11
📂 Salesforce Apex🟢 Beginner📘 Apex Daily

SOQL For Loop అంటే ఏమిటి? Salesforce Records ని Loop చేయడం ఎలా?

ఈ రోజు మనం Salesforce Development లో చాలా ముఖ్యమైన Practical Concept అయిన SOQL For Loop గురించి నేర్చుకోబోతున్నాం.

SOQL For Loop

మీరు Salesforce Developer గా పని చేయాలంటే SOQL For Loop గురించి తప్పకుండా తెలుసుకోవాలి.

ఎందుకంటే Salesforce లో ఎక్కువగా మనం Records తోనే పని చేస్తాం.

Accounts, Contacts, Opportunities, Leads, Cases వంటి Records ని Salesforce నుండి తీసుకుని వాటిపై Logic Apply చేయాల్సి ఉంటుంది.

అప్పుడు SOQL For Loop చాలా ఉపయోగపడుతుంది.

---

ముందుగా SOQL అంటే ఏమిటో గుర్తు చేసుకుందాం

SOQL అంటే:

Salesforce Object Query Language

Salesforce Database లో ఉన్న Records ని Search చేసి తీసుకోవడానికి SOQL ఉపయోగిస్తాం.

ఉదాహరణ:

Apex
SELECT Id, Name FROM Account

అంటే:

Account Object లోని Id మరియు Name Fields ఉన్న Records ని తీసుకురా.

---

ఇప్పుడు ఒక చిన్న Example చూద్దాం

మీ Salesforce Org లో 100 Accounts ఉన్నాయని అనుకోండి.

మీకు అన్ని Account Names కావాలి.

ముందుగా SOQL Query రాస్తాం:

Apex
SELECT Id, Name FROM Account

ఇది Accounts ని తీసుకువస్తుంది.

ఇప్పుడు వచ్చిన ప్రతి Account ని ఒక్కొక్కటిగా Process చేయాలి.

అప్పుడు:

Apex
for (Account acc : [SELECT Id, Name FROM Account]) {
    System.debug(acc.Name);
}

ఇదే SOQL For Loop.

---

SOQL For Loop అంటే ఏమిటి?

DefinitionSOQL Query ద్వారా Salesforce నుండి వచ్చిన Records ను ఒక్కొక్కటిగా Process చేయడానికి ఉపయోగించే For Loop ను SOQL For Loop అంటారు.

సింపుల్‌గా:

ImportantSalesforce లో Records ని Query చేసి, ఒక్కొక్క Record మీద పని చేయాలంటే SOQL For Loop ఉపయోగించవచ్చు.

---

SOQL For Loop Syntax

Apex
for (Account acc : [SELECT Id, Name FROM Account]) {
    System.debug(acc.Name);
}

ఇక్కడ:

Account → Object Type

acc → ఒక్కొక్క Account Record ని Store చేసే Variable

[SELECT Id, Name FROM Account] → SOQL Query

---

ఈ Code ని ఒక్కొక్క భాగంగా చూద్దాం

Apex
for (Account acc : [SELECT Id, Name FROM Account])

ఇది ఇలా చదవండి:

ImportantAccount Records ని Query చేయి. వచ్చిన ప్రతి Account ని acc అనే Variable లోకి తీసుకుని Process చేయి.

అంతే.

---

Complete Example

Apex
for (Account acc : [SELECT Id, Name FROM Account]) {
    System.debug('Account Name: ' + acc.Name);
}

మీ Salesforce Org లో Accounts ఉంటే వాటి Names Debug Log లో కనిపిస్తాయి.

---

Example Output

మీ Org లో:

Apex
ABC Company
XYZ Technologies
SFDC Telugu
Global Solutions

అనే Accounts ఉన్నాయని అనుకుందాం.

Output:

Apex
Account Name: ABC Company
Account Name: XYZ Technologies
Account Name: SFDC Telugu
Account Name: Global Solutions

ప్రతి Record ని Loop ఒక్కొక్కటిగా Process చేస్తుంది.

---

SOQL For Loop లో Fields ఎలా ఉపయోగించాలి?

మన Query లో ఏ Fields తీసుకుంటామో, వాటిని Loop లో ఉపయోగించవచ్చు.

Example:

Apex
for (Account acc : [
    SELECT Id, Name, Industry, Phone
    FROM Account
]) {
    System.debug('Name: ' + acc.Name);
    System.debug('Industry: ' + acc.Industry);
    System.debug('Phone: ' + acc.Phone);
}

ఇక్కడ మనం:

  • Id
  • Name
  • Industry
  • Phone

తీసుకున్నాం.

కాబట్టి Loop లో వీటిని ఉపయోగించవచ్చు.

---

ఒక ముఖ్యమైన Rule

Query లో Field తీసుకోకపోతే Loop లో ఆ Field ని ఉపయోగించలేం.

ఉదాహరణ:

Apex
for (Account acc : [SELECT Id, Name FROM Account]) {
    System.debug(acc.Industry);
}

ఇక్కడ Industry Query లో Select చేయలేదు.

అందువల్ల Error వస్తుంది.

సరైన Code:

Apex
for (Account acc : [
    SELECT Id, Name, Industry
    FROM Account
]) {
    System.debug(acc.Industry);
}

---

SOQL For Loop + If Condition

ఇది Salesforce Development లో చాలా common pattern.

ఒక Example చూద్దాం.

మనకు Technology Industry ఉన్న Accounts మాత్రమే కావాలి.

Apex
for (Account acc : [
    SELECT Id, Name, Industry
    FROM Account
]) {
    if (acc.Industry == 'Technology') {
        System.debug('Technology Account: ' + acc.Name);
    }
}

ఇక్కడ ఏమి జరుగుతోంది?

Step 1

Accounts ని Query చేస్తున్నాం.

Step 2

ప్రతి Account ని Loop చేస్తున్నాం.

Step 3

Industry Check చేస్తున్నాం.

Step 4

Technology అయితే మాత్రమే Print చేస్తున్నాం.

---

SOQL లోనే Filter చేయడం Better కదా?

అవును.

ఇది చాలా Important Point.

మనకు Technology Accounts మాత్రమే కావాలంటే Query లోనే Filter చేయవచ్చు.

Apex
for (Account acc : [
    SELECT Id, Name, Industry
    FROM Account
    WHERE Industry = 'Technology'
]) {
    System.debug(acc.Name);
}

ఇప్పుడు Salesforce Database నుండే Technology Accounts మాత్రమే వస్తాయి.

ఇది unnecessary Records ని తీసుకురాకుండా ఉండటానికి సహాయపడుతుంది.

---

ఇది ఎందుకు Better?

మొదటి Approach:

Apex
SELECT Id, Name, Industry FROM Account

అన్ని Accounts వస్తాయి.

తర్వాత Apex లో Filter చేస్తాం.

రెండో Approach:

Apex
SELECT Id, Name, Industry
FROM Account
WHERE Industry = 'Technology'

అవసరమైన Accounts మాత్రమే Query చేస్తాం.

అందుకే Query లోనే అవసరమైన Data ని Filter చేయడం మంచి Practice.

---

SOQL For Loop – Contact Example

ఇప్పుడు Contacts చూద్దాం.

Apex
for (Contact con : [
    SELECT Id, FirstName, LastName, Email
    FROM Contact
]) {
    System.debug('Name: ' + con.FirstName + ' ' + con.LastName);
    System.debug('Email: ' + con.Email);
}

ఇది ప్రతి Contact ని ఒక్కొక్కటిగా Process చేస్తుంది.

---

Opportunity Example

అన్ని Opportunities యొక్క Name మరియు Stage తెలుసుకోవాలి.

Apex
for (Opportunity opp : [
    SELECT Id, Name, StageName
    FROM Opportunity
]) {
    System.debug('Opportunity: ' + opp.Name);
    System.debug('Stage: ' + opp.StageName);
}

---

Case Example

అన్ని Cases యొక్క Subject మరియు Status చూడాలి.

Apex
for (Case c : [
    SELECT Id, Subject, Status
    FROM Case
]) {
    System.debug('Subject: ' + c.Subject);
    System.debug('Status: ' + c.Status);
}

---

SOQL For Loop vs List For Loop

ఈ రెండు Concepts మధ్య Difference అర్థం చేసుకోవడం చాలా ముఖ్యం.

List For Loop

ముందుగా List Create లేదా Query చేసి Variable లో Store చేస్తాం.

Apex
List<Account> accounts = [
    SELECT Id, Name
    FROM Account
];

for (Account acc : accounts) {
    System.debug(acc.Name);
}

---

SOQL For Loop

Query ని Direct గా For Loop లో రాస్తాం.

Apex
for (Account acc : [
    SELECT Id, Name
    FROM Account
]) {
    System.debug(acc.Name);
}

రెండింటి Purpose Records ని Loop చేయడమే.

Difference ఏమిటంటే Query ని ఎలా Handle చేస్తున్నామనేది.

---

Salesforce Developer కి ఇది ఎందుకు Important?

Salesforce లో Data ఎక్కువగా ఉంటుంది.

ఒక Company లో:

  • Thousands of Accounts
  • Thousands of Contacts
  • Thousands of Opportunities
  • Thousands of Cases

ఉండవచ్చు.

వాటిని Code ద్వారా Process చేయాల్సి వచ్చినప్పుడు SOQL మరియు Loops రెండూ చాలా Important.

---

Governor Limits గురించి గుర్తుంచుకోండి

Salesforce లో Governor Limits ఉంటాయి.

అందుకే Salesforce Coding లో Database Queries ని తెలివిగా ఉపయోగించాలి.

ప్రత్యేకంగా:

ImportantLoop లో ప్రతి Record కోసం ఒక కొత్త SOQL Query చేయడం సాధారణంగా మంచి Practice కాదు.

Example:

Apex
for (Account acc : accounts) {
    // ప్రతి Account కోసం SOQL Query చేయడం Avoid చేయాలి
}

దీనివల్ల Governor Limits సమస్యలు రావచ్చు.

దీన్ని మనం తర్వాత Bulkification Topic లో చాలా Detailed గా నేర్చుకుందాం.

---

SOQL For Loop ని ఇలా గుర్తుపెట్టుకోండి

Apex
SOQL Query
     ↓
Salesforce Records
     ↓
For Loop
     ↓
One Record at a Time
     ↓
Business Logic

ఇదే Basic Idea.

---

Real-Time Scenario

ఒక Company లో Closed Won Opportunities మాత్రమే Process చేయాలి.

Apex
for (Opportunity opp : [
    SELECT Id, Name, StageName
    FROM Opportunity
    WHERE StageName = 'Closed Won'
]) {
    System.debug('Won Opportunity: ' + opp.Name);
}

ఇక్కడ Query నుండే Closed Won Records మాత్రమే తీసుకుంటున్నాం.

తర్వాత Loop వాటిని ఒక్కొక్కటిగా Process చేస్తుంది.

---

ఇంకో Real-Time Scenario

High Revenue Accounts కావాలి.

Annual Revenue ₹10,00,000 కంటే ఎక్కువ ఉన్న Accounts మాత్రమే తీసుకుందాం.

Apex
for (Account acc : [
    SELECT Id, Name, AnnualRevenue
    FROM Account
    WHERE AnnualRevenue > 1000000
]) {
    System.debug(
        'High Revenue Account: ' + acc.Name
    );
}

ఇది Real-Time Salesforce Development లో వచ్చే Business Requirement లాంటిదే.

---

Practice Task

ఈ రోజు ఈ Programs ను Developer Console లో Run చేయండి.

Practice 1 – Accounts

Apex
for (Account acc : [
    SELECT Id, Name
    FROM Account
]) {
    System.debug(acc.Name);
}

---

Practice 2 – Contacts

Apex
for (Contact con : [
    SELECT Id, FirstName, LastName
    FROM Contact
]) {
    System.debug(con.FirstName + ' ' + con.LastName);
}

---

Practice 3 – Opportunities

Apex
for (Opportunity opp : [
    SELECT Id, Name, StageName
    FROM Opportunity
]) {
    System.debug(
        opp.Name + ' - ' + opp.StageName
    );
}

---

Practice 4 – Filter

Closed Won Opportunities మాత్రమే Print చేయండి.

Hint:

Apex
WHERE StageName = 'Closed Won'

---

Practice 5 – Account Industry

Technology Industry ఉన్న Accounts మాత్రమే Print చేయండి.

Query లోనే WHERE ఉపయోగించి Try చేయండి.

---

Interview Questions

1. SOQL For Loop అంటే ఏమిటి?

Answer

Answer: SOQL Query ద్వారా Salesforce నుండి వచ్చిన Records ను ఒక్కొక్కటిగా Process చేయడానికి ఉపయోగించే For Loop ను SOQL For Loop అంటారు.

2. SOQL For Loop యొక్క Syntax ఏమిటి?

Answer

SOQL For Loop యొక్క basic syntax: for (Account acc : [SELECT Id, Name FROM Account]) { System.debug(acc.Name); }

3. SOQL Query లో Select చేయని Field ని Loop లో ఉపయోగించవచ్చా?

Answer

Answer: లేదు. ఆ Field ని SOQL Query లో Select చేయాలి.

4. SOQL For Loop లో WHERE ఉపయోగించవచ్చా?

Answer

Answer: అవును. అవసరమైన Records మాత్రమే తీసుకోవడానికి WHERE ఉపయోగించవచ్చు.

5. Loop లో ప్రతి Record కోసం SOQL Query చేయడం మంచిదా?

Answer

సాధారణంగా కాదు. Salesforce Governor Limits కారణంగా SOQL Queries ని Efficient గా మరియు Bulkified గా రాయాలి. ---

Conclusion

ఈ రోజు మనం SOQL For Loop గురించి పూర్తిగా నేర్చుకున్నాం.

ఇది Salesforce Developer కి చాలా ముఖ్యమైన Concept.

ముఖ్యంగా:

SOQL → Records → For Loop → Business Logic

ఈ Pattern ని మీరు Salesforce Coding లో చాలా సార్లు చూస్తారు.

ఈ రోజు Programs అన్నీ స్వయంగా Type చేసి Practice చేయండి.

ముందుగా Code ఏం చేస్తుందో మీరు ఊహించండి.

తర్వాత Run చేసి Output Check చేయండి.

ఇలా Practice చేస్తే కేవలం Code Copy చేయడం కాకుండా Code Logic అర్థం చేసుకునే Skill మీకు Develop అవుతుంది.

---

ఈ Topic మీకు Easy గా అర్థమైందా?

ఈ Blog ద్వారా విషయం మీకు సులభంగా అర్థమైతే, Comment చేసి మీ అభిప్రాయాన్ని తెలియజేయండి.

ఇలాంటి Salesforce Tutorials, Updates మరియు Useful Content కోసం SFDC Telugu Channel ని Subscribe చేయండి.

📍 ఒక చిన్న Request:
Comment లో మీరు ఏ Place నుండి ఈ Blog చదువుతున్నారో చెప్పండి.

Thank You! ❤️

Happy Learning & Happy Coding! ❤️ — SFDC Telugu | Apex Daily

Post a Comment

0 Comments