Sortera i en CURSOR

Databaser & SQL

2 svar · 200 visningar · startad av KWES

Medlem sedan jan. 20035 inlägg
Trådstart#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

Medlem sedan feb. 20005 891 inlägg
#2

Flyttade från Webbutv. Övrigt.

Medlem sedan dec. 200012 464 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;
251 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)