Oracle
Зохицуулагчид: Computer software, Computer Hardware
Re: Oracle
Нээх сүртэй Про нь ч хайшаан. Гэхдээ .Net ээс Ораклруу хандаж ажилладаг.
Re: Oracle
Query, Optimization, DBA tool uud юу ч байж болно ш дээ
Re: Oracle
Хэрэв Oracle Client ашиглаж байгаа бол тэгсэн нь дээр.cool_XXX написал:connection оо яаж үүсгэсэн бэ?
би tnsnames.орагаар холбосон.
Oracle Instant Client ашиглаж байвал Бүх TnsNames ээ нэг Helper Class Дотор оруулаад тэрнийгээ дуудаад байвал амар.
Re: Oracle
udur bolgon dump file uusgej bgaa. rman bas tohiruulsan. teriigee ch neeh sain ashiglahgui l bn. sergeehdee dump file-aa l ashiglaad bgaa. jijig db bolohoor udurt hiigdeh uurchlult bagatai. muu servertei bhad zunduu sergeedegb san server-ee solisonoos hoish haaya l orj shalgadag bolson
Suup?
Re: Oracle
CUSTOMER харилцагчдыг хадгалах table
LOANACCOUNT зээлийн данс хадгалах table
CUSTOMER болон LOANACCOUNT гэсэн 2 table маань 2уулаа Харилцагчийн ID агуулах CUSTID талбартай ба зорилго нь Харилцагчын авсан зээлийн данснуудыг дугаарлах зорилготой юм. LOANACCOUNT-н LOANNUM гэсэн талбар дээр дугаарлана.
Энэн шиг давталыг Oracle дээр яаж давтах вэ? Cursor ашиглах юм шиг байган тэхдээ сайн ойлгодоггүйэ туслаач хүмүүсээ.
LOANACCOUNT зээлийн данс хадгалах table
CUSTOMER болон LOANACCOUNT гэсэн 2 table маань 2уулаа Харилцагчийн ID агуулах CUSTID талбартай ба зорилго нь Харилцагчын авсан зээлийн данснуудыг дугаарлах зорилготой юм. LOANACCOUNT-н LOANNUM гэсэн талбар дээр дугаарлана.
Код: Бүгдийг сонгох
for (int i = 0; i < CUSTOMER.count; i++)
{
for (int i = 0; i < (SELECT FROM LOANACCOUNT WHERE LOANACCOUNT.CUSTID = CUSTOMER.CUSTID).count; i++)
{
UPDATE LOANACCOUNT.LOANNUM = i+1;
}
}Re: Oracle
Миний бодлоор loop бичихгүй зүгээр л MERGE INTO ашиглавал зүгээр байх. Бас чиний эцсийн зорилгийг чинь ойлгосонгүй.ochiroo13 написал:CUSTOMER харилцагчдыг хадгалах table
LOANACCOUNT зээлийн данс хадгалах table
CUSTOMER болон LOANACCOUNT гэсэн 2 table маань 2уулаа Харилцагчийн ID агуулах CUSTID талбартай ба зорилго нь Харилцагчын авсан зээлийн данснуудыг дугаарлах зорилготой юм. LOANACCOUNT-н LOANNUM гэсэн талбар дээр дугаарлана.
Энэн шиг давталыг Oracle дээр яаж давтах вэ? Cursor ашиглах юм шиг байган тэхдээ сайн ойлгодоггүйэ туслаач хүмүүсээ.Код: Бүгдийг сонгох
for (int i = 0; i < CUSTOMER.count; i++) { for (int i = 0; i < (SELECT FROM LOANACCOUNT WHERE LOANACCOUNT.CUSTID = CUSTOMER.CUSTID).count; i++) { UPDATE LOANACCOUNT.LOANNUM = i+1; } }
Баазын table үүд бол Excel ийн хуудас биш харин Программын object юм шүү. Ингэж ROW Number update хийдэг зүйл буруу л санагдаж байна. Дэс дугаар харуулах гэж байгаа бол зүгээр л SELECT дээрээ бичцэн нь дээр.
Энд тестлээд үзээрэй http://www.sqlfiddle.com/#!4/8eea6/13
Код: Бүгдийг сонгох
MERGE INTO loan_account la
USING (SELECT LOAN_ACCOUNT_ID,
ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY LOAN_ACCOUNT_ID) AS UPDATE_ORDER
FROM LOAN_ACCOUNT) s
ON (la.LOAN_ACCOUNT_ID = s.LOAN_ACCOUNT_ID)
WHEN MATCHED THEN UPDATE SET la.LOANNUM = s.UPDATE_ORDER;
SELECT * FROM loan_account la
LEFT JOIN customer c ON la.customer_id = c.customer_id;Re: Oracle
n3xus написал:Миний бодлоор loop бичихгүй зүгээр л MERGE INTO ашиглавал зүгээр байх. Бас чиний эцсийн зорилгийг чинь ойлгосонгүй.ochiroo13 написал:CUSTOMER харилцагчдыг хадгалах table
LOANACCOUNT зээлийн данс хадгалах table
CUSTOMER болон LOANACCOUNT гэсэн 2 table маань 2уулаа Харилцагчийн ID агуулах CUSTID талбартай ба зорилго нь Харилцагчын авсан зээлийн данснуудыг дугаарлах зорилготой юм. LOANACCOUNT-н LOANNUM гэсэн талбар дээр дугаарлана.
Энэн шиг давталыг Oracle дээр яаж давтах вэ? Cursor ашиглах юм шиг байган тэхдээ сайн ойлгодоггүйэ туслаач хүмүүсээ.Код: Бүгдийг сонгох
for (int i = 0; i < CUSTOMER.count; i++) { for (int i = 0; i < (SELECT FROM LOANACCOUNT WHERE LOANACCOUNT.CUSTID = CUSTOMER.CUSTID).count; i++) { UPDATE LOANACCOUNT.LOANNUM = i+1; } }
Баазын table үүд бол Excel ийн хуудас биш харин Программын object юм шүү. Ингэж ROW Number update хийдэг зүйл буруу л санагдаж байна. Дэс дугаар харуулах гэж байгаа бол зүгээр л SELECT дээрээ бичцэн нь дээр.
Энд тестлээд үзээрэй http://www.sqlfiddle.com/#!4/8eea6/13
Код: Бүгдийг сонгох
MERGE INTO loan_account la USING (SELECT LOAN_ACCOUNT_ID, ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY LOAN_ACCOUNT_ID) AS UPDATE_ORDER FROM LOAN_ACCOUNT) s ON (la.LOAN_ACCOUNT_ID = s.LOAN_ACCOUNT_ID) WHEN MATCHED THEN UPDATE SET la.LOANNUM = s.UPDATE_ORDER; SELECT * FROM loan_account la LEFT JOIN customer c ON la.customer_id = c.customer_id;
Маш их баярлалаа. Би харин өөрөө сайн мэдэхгүй болохоор хүнээс асуусан чинь cursor ашиглана гэхээр нь тэрийг зөндөө хайлаа. Loop ашиглахгүй байх нь илүү амар бас оновчтой байсан юм билээ. Доорх аргаар шийдсэн арай болхи байж магадгүй.
Код: Бүгдийг сонгох
CREATE TABLE LOANACNT_TEMP
AS
(SELECT
ROW_NUMBER () OVER (PARTITION BY CUSTNO ORDER BY CUSTNO, ADVDATE)
LOANNUM
FROM LOANACNT);
UPDATE LOANACNT R
SET R.LOANNUM =
(SELECT TEMP.LOANNUM
FROM LOANACNT_TEMP TEMP
WHERE R.ACNTNO = TEMP.ACNTNO);
DROP TABLE LOANACNT_TEMP;
COMMIT;
-
csasoongner
- Өсөх Ирээдvйтэй Гишvvн

- Бичлэгүүд: 7
- Нэгдсэн: 1-р сар.10.17 5:44 pm




