Yazar |
|
eternal
Kayıt: 07.02.2007 |
|
Selam Arkadaşlar
PL/SQL çok bilmiyorum
Şöyle bir Stored Procedure var.
CREATE OR REPLACE PROCEDURE SP_IVR_ANONS_LISTE(p_MSISDN IN VARCHAR2, p_Result OUT VARCHAR2) IS
v_result VARCHAR2(20);
CURSOR cur_ivr (p_objid NUMBER)IS
SELECT ListNo FROM TABLE_IVR_ANONS_LISTE i
WHERE i.MSISDN = p_MSISDN;
BEGIN
FOR each_item IN cur_ivr (v_result) LOOP
v_result := each_item.ListNo || ',';
END LOOP;
p_Result := v_result;
DBMS_OUTPUT.PUT_LINE
('p_Result ' || p_Result);
EXCEPTION
WHEN OTHERS THEN
p_Result := '';
END;
Ama girilen input değerine karşılık birkaç tane kayıt dönüyorsa hepsini virgül ile ayıurıp almak istiyorum.Bu kod ise direk ilkini eziyor.
Yardımcı olabilecek birileri var mı?
|
|
Yazar |
|
nihat
Terasus
Kayıt: 18.01.2006 |
|
eternal yazdi | Selam Arkadaşlar
PL/SQL çok bilmiyorum
Şöyle bir Stored Procedure var.
CREATE OR REPLACE PROCEDURE SP_IVR_ANONS_LISTE(p_MSISDN IN VARCHAR2, p_Result OUT VARCHAR2) IS
v_result VARCHAR2(20);
CURSOR cur_ivr (p_objid NUMBER)IS
SELECT ListNo FROM TABLE_IVR_ANONS_LISTE i
WHERE i.MSISDN = p_MSISDN;
BEGIN
FOR each_item IN cur_ivr (v_result) LOOP
v_result := each_item.ListNo || ',';
END LOOP;
p_Result := v_result;
DBMS_OUTPUT.PUT_LINE
('p_Result ' || p_Result);
EXCEPTION
WHEN OTHERS THEN
p_Result := '';
END;
Ama girilen input değerine karşılık birkaç tane kayıt dönüyorsa hepsini virgül ile ayıurıp almak istiyorum.Bu kod ise direk ilkini eziyor.
Yardımcı olabilecek birileri var mı? |
Bende yeniyim PL SQL de aslında fakat;
cursor ın içine üstte input olarak NUMBER demişssin ancak v_result değeri varchar2 olarak tanımlanmış.Bu şekilde kod çalışmamalı diye düşünüyorum.Çalıştı mı gerçekten?
CREATE OR REPLACE PROCEDURE SP_IVR_ANONS_LISTE(p_MSISDN IN VARCHAR2, p_Result OUT NUMBER) IS
v_result NUMBER
CURSOR cur_ivr (p_objid NUMBER)IS
SELECT ListNo FROM TABLE_IVR_ANONS_LISTE i
WHERE i.MSISDN = p_MSISDN;
BEGIN
FOR each_item IN cur_ivr (v_result) LOOP
v_result := each_item.ListNo;
p_Result = v_result;
DBMS_OUTPUT.PUT (p_Result || ',');
END LOOP;
EXCEPTION
WHEN OTHERS THEN
p_Result := NULL;
END;
Yalnız bu en sondakine de virgul koyar.Varchar olarak yazdırmak istiyorsan kidaha şık olur,number format yapman gerekir.
|
|
Yazar |
|
orhan
istanbul
admin
Kayıt: 17.11.2005 |
|
SELECT MAX(TRIM(',' FROM (SYS_CONNECT_BY_PATH(USVS_NO,',')))) AS result
FROM (
--query start
SELECT USVS_NO, ROW_NUMBER() OVER (order by USVS_NO asc) AS rowno
FROM SN_VERI_ELEMANLARI
--query end
)
START WITH rowno = 1
CONNECT BY PRIOR rowno = rowno - 1
bu query resultseti virgul ile ayrilmis sekilde dondurur.
bunu procedure yaparsan işini gorecektir.
0,3,4,8,10,11,12,13,14
gibi
N/A
|
|
Yazar |
|
keox17
ist
Kayıt: 27.06.2006 |
|
eternal yazdi | Selam Arkadaşlar
PL/SQL çok bilmiyorum
Şöyle bir Stored Procedure var.
CREATE OR REPLACE PROCEDURE SP_IVR_ANONS_LISTE(p_MSISDN IN VARCHAR2, p_Result OUT VARCHAR2) IS
v_result VARCHAR2(20);
CURSOR cur_ivr (p_objid NUMBER)IS
SELECT ListNo FROM TABLE_IVR_ANONS_LISTE i
WHERE i.MSISDN = p_MSISDN;
BEGIN
FOR each_item IN cur_ivr (v_result) LOOP
v_result := each_item.ListNo || ',';
END LOOP;
p_Result := v_result;
DBMS_OUTPUT.PUT_LINE
('p_Result ' || p_Result);
EXCEPTION
WHEN OTHERS THEN
p_Result := '';
END;
Ama girilen input değerine karşılık birkaç tane kayıt dönüyorsa hepsini virgül ile ayıurıp almak istiyorum.Bu kod ise direk ilkini eziyor.
Yardımcı olabilecek birileri var mı? |
BEGIN
FOR each_item IN cur_ivr (v_result) LOOP
v_result := each_item.ListNo || ',';
END LOOP;
p_Result := v_result;
DBMS_OUTPUT.PUT_LINE
('p_Result ' || p_Result);
END LOOP un altindakileri v_result in asagidaki gibi yerlestirirsen sanirim sonuc alirsin.
BEGIN
FOR each_item IN cur_ivr (v_result) LOOP
v_result := each_item.ListNo || ',';
p_Result := v_result;
DBMS_OUTPUT.PUT_LINE
('p_Result ' || p_Result);
END LOOP;
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
|