webForumDet fria alternativet

Sortera i en CURSOR

2 svar · 194 visningar · startad av KWES

KWESMedlem sedan jan. 20035 inlägg
#1

I mitt PL/SQL script så vill jag kunna använda mig av en sortering genom en variabel för att sortera en tabell med resultatet från CURSORn
Jag har försökt det vanliga sättet med en IN variabel från PROCESDUREN men det vill den inte ta.

//Kwes

cascaMedlem sedan feb. 20003 262 inlägg
#2

Flyttade från Webbutv. Övrigt.

LarsGMedlem sedan dec. 200012 465 inlägg
#3

Du kanske måste använda dynamisk sql? (Vet ej säkert.)

CREATE OR REPLACE PROCEDURE 
DEPARTMENTS(NO IN DEPT.DEPTNO%TYPE, sortCol varchar2(20)) AS
	  v_cursor integer;
	  v_dname  char(20);
	  v_rows   integer;
BEGIN
	  v_cursor := DBMS_SQL.OPEN_CURSOR;
	  DBMS_SQL.PARSE(v_cursor, 'select dname from dept where deptno > :z order by ' || sortCol, DBMS_SQL.V7);
	  DBMS_SQL.BIND_VARIABLE(v_cursor, ':z', no);
	  DBMS_SQL.DEFINE_COLUMN_CHAR(v_cursor, 1, v_dname, 20);
	  v_rows := DBMS_SQL.EXECUTE(v_cursor);
	  loop
	    if DBMS_SQL.FETCH_ROWS(v_cursor) = 0 then
	       exit;
	    end if;
	    DBMS_SQL.COLUMN_VALUE_CHAR(v_cursor, 1, v_dname);
	    DBMS_OUTPUT.PUT_LINE('Deptartment name: '||v_dname);
	  end loop;
	  DBMS_SQL.CLOSE_CURSOR(v_cursor);
	EXCEPTION
	  when others then
	       DBMS_SQL.CLOSE_CURSOR(v_cursor);
	       raise_application_error(-20000, 'Unknown Exception Raised: '||sqlcode||' '||sqlerrm);
	END;
Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb