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 ఉపయోగిస్తాం.
ఉదాహరణ:
ApexSELECT Id, Name FROM Accountఅంటే:
Account Object లోని Id మరియు Name Fields ఉన్న Records ని తీసుకురా.
---
ఇప్పుడు ఒక చిన్న Example చూద్దాం
మీ Salesforce Org లో 100 Accounts ఉన్నాయని అనుకోండి.
మీకు అన్ని Account Names కావాలి.
ముందుగా SOQL Query రాస్తాం:
ApexSELECT Id, Name FROM Accountఇది Accounts ని తీసుకువస్తుంది.
ఇప్పుడు వచ్చిన ప్రతి Account ని ఒక్కొక్కటిగా Process చేయాలి.
అప్పుడు:
Apexfor (Account acc : [SELECT Id, Name FROM Account]) {
System.debug(acc.Name);
}ఇదే SOQL For Loop.
---
SOQL For Loop అంటే ఏమిటి?
సింపుల్గా:
---
SOQL For Loop Syntax
Apexfor (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 ని ఒక్కొక్క భాగంగా చూద్దాం
Apexfor (Account acc : [SELECT Id, Name FROM Account])ఇది ఇలా చదవండి:
acc అనే Variable లోకి తీసుకుని Process చేయి.అంతే.
---
Complete Example
Apexfor (Account acc : [SELECT Id, Name FROM Account]) {
System.debug('Account Name: ' + acc.Name);
}మీ Salesforce Org లో Accounts ఉంటే వాటి Names Debug Log లో కనిపిస్తాయి.
---
Example Output
మీ Org లో:
ApexABC Company
XYZ Technologies
SFDC Telugu
Global Solutionsఅనే Accounts ఉన్నాయని అనుకుందాం.
Output:
ApexAccount 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:
Apexfor (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 ని ఉపయోగించలేం.
ఉదాహరణ:
Apexfor (Account acc : [SELECT Id, Name FROM Account]) {
System.debug(acc.Industry);
}ఇక్కడ Industry Query లో Select చేయలేదు.
అందువల్ల Error వస్తుంది.
సరైన Code:
Apexfor (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 మాత్రమే కావాలి.
Apexfor (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 చేయవచ్చు.
Apexfor (Account acc : [
SELECT Id, Name, Industry
FROM Account
WHERE Industry = 'Technology'
]) {
System.debug(acc.Name);
}ఇప్పుడు Salesforce Database నుండే Technology Accounts మాత్రమే వస్తాయి.
ఇది unnecessary Records ని తీసుకురాకుండా ఉండటానికి సహాయపడుతుంది.
---
ఇది ఎందుకు Better?
మొదటి Approach:
ApexSELECT Id, Name, Industry FROM Accountఅన్ని Accounts వస్తాయి.
తర్వాత Apex లో Filter చేస్తాం.
రెండో Approach:
ApexSELECT Id, Name, Industry
FROM Account
WHERE Industry = 'Technology'అవసరమైన Accounts మాత్రమే Query చేస్తాం.
అందుకే Query లోనే అవసరమైన Data ని Filter చేయడం మంచి Practice.
---
SOQL For Loop – Contact Example
ఇప్పుడు Contacts చూద్దాం.
Apexfor (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 తెలుసుకోవాలి.
Apexfor (Opportunity opp : [
SELECT Id, Name, StageName
FROM Opportunity
]) {
System.debug('Opportunity: ' + opp.Name);
System.debug('Stage: ' + opp.StageName);
}---
Case Example
అన్ని Cases యొక్క Subject మరియు Status చూడాలి.
Apexfor (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 చేస్తాం.
ApexList<Account> accounts = [
SELECT Id, Name
FROM Account
];
for (Account acc : accounts) {
System.debug(acc.Name);
}---
SOQL For Loop
Query ని Direct గా For Loop లో రాస్తాం.
Apexfor (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 ని తెలివిగా ఉపయోగించాలి.
ప్రత్యేకంగా:
Example:
Apexfor (Account acc : accounts) {
// ప్రతి Account కోసం SOQL Query చేయడం Avoid చేయాలి
}దీనివల్ల Governor Limits సమస్యలు రావచ్చు.
దీన్ని మనం తర్వాత Bulkification Topic లో చాలా Detailed గా నేర్చుకుందాం.
---
SOQL For Loop ని ఇలా గుర్తుపెట్టుకోండి
ApexSOQL Query
↓
Salesforce Records
↓
For Loop
↓
One Record at a Time
↓
Business Logicఇదే Basic Idea.
---
Real-Time Scenario
ఒక Company లో Closed Won Opportunities మాత్రమే Process చేయాలి.
Apexfor (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 మాత్రమే తీసుకుందాం.
Apexfor (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
Apexfor (Account acc : [
SELECT Id, Name
FROM Account
]) {
System.debug(acc.Name);
}---
Practice 2 – Contacts
Apexfor (Contact con : [
SELECT Id, FirstName, LastName
FROM Contact
]) {
System.debug(con.FirstName + ' ' + con.LastName);
}---
Practice 3 – Opportunities
Apexfor (Opportunity opp : [
SELECT Id, Name, StageName
FROM Opportunity
]) {
System.debug(
opp.Name + ' - ' + opp.StageName
);
}---
Practice 4 – Filter
Closed Won Opportunities మాత్రమే Print చేయండి.
Hint:
ApexWHERE StageName = 'Closed Won'---
Practice 5 – Account Industry
Technology Industry ఉన్న Accounts మాత్రమే Print చేయండి.
Query లోనే WHERE ఉపయోగించి Try చేయండి.
---
Interview Questions
1. SOQL For Loop అంటే ఏమిటి?
AnswerAnswer: SOQL Query ద్వారా Salesforce నుండి వచ్చిన Records ను ఒక్కొక్కటిగా Process చేయడానికి ఉపయోగించే For Loop ను SOQL For Loop అంటారు.
2. SOQL For Loop యొక్క Syntax ఏమిటి?
AnswerSOQL For Loop యొక్క basic syntax: for (Account acc : [SELECT Id, Name FROM Account]) { System.debug(acc.Name); }
3. SOQL Query లో Select చేయని Field ని Loop లో ఉపయోగించవచ్చా?
AnswerAnswer: లేదు. ఆ Field ని SOQL Query లో Select చేయాలి.
4. SOQL For Loop లో WHERE ఉపయోగించవచ్చా?
AnswerAnswer: అవును. అవసరమైన 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 చేయండి.
Comment లో మీరు ఏ Place నుండి ఈ Blog చదువుతున్నారో చెప్పండి.
Thank You! ❤️
0 Comments