webForumDet fria alternativet
Logga in / Bli medlem

Sortera i en CURSOR

Databaser & SQL

2 svar · 196 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.51f67c91
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)