SET TERM ^ ;
CREATE OR ALTER PROCEDURE MD_SP (
SAYISAL_YAPI VARCHAR(10) NOT NULL COLLATE PXW_TURK,
KAYNAK_SABLON_TABLO VARCHAR(25) NOT NULL COLLATE PXW_TURK,
KAYNAK_SABLON_ALANI VARCHAR(25) NOT NULL COLLATE PXW_TURK,
KAYNAK_SABLON_KOD VARCHAR(25) NOT NULL COLLATE PXW_TURK,
KAYNAK_SABLON_ADI VARCHAR(25) NOT NULL COLLATE PXW_TURK)
RETURNS (
SP_SABLON1 VARCHAR(25) COLLATE PXW_TURK,
SP_SABLON2 VARCHAR(25) COLLATE PXW_TURK)
AS
DECLARE VARIABLE SABLON VARCHAR(10);
BEGIN
EXECUTE STATEMENT 'SELECT ' || :KAYNAK_SABLON_KOD || 'FROM ' || :KAYNAK_SABLON_TABLO || 'WHERE' ||:KAYNAK_SABLON_ALANI ||:KAYNAK_SABLON_ADI INTO :SABLON;
IF (STRLEN(SAYISAL_YAPI) > 3) THEN
BEGIN
EXCEPTION UYAR;
EXIT;
END
WHILE (STRLEN(SAYISAL_YAPI) < 3) DO
SAYISAL_YAPI = '0' || SAYISAL_YAPI;
SP_SABLON2=SAYISAL_YAPI;
SP_SABLON1=SABLON;
SUSPEND;
END^
SET TERM ; ^
/* EXISTING PRIVILEGES ON THIS PROCEDURE */
GRANT EXECUTE ON PROCEDURE MD_SP TO SYSDBA;
ibexper vs gibi bir tool la procedure ü debug et, oluşan sql string i kontrol et where de kriterin yok, yani
:KAYNAK_SABLON_ALANI ||' = '||:KAYNAK_SABLON_ADI gibi. bir kıyaslaman yok gibi görünüyor, o yüzden oluşan string i kotrol et.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak... Zoru başarırım, İmkansız zaman alır FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!