[HTMLDB - PL/SQL] komplexes problem

SchwarzerMond

Grünschnabel
Einen wunderschönen guten Tag,

ich hoffe hier kennt sich jemand ein wenig mit HTMLDB aus (neues Produkt von Oracle).

In meinem Problem geht es darum, dass Tabellen parametrisiert (variabler Tablespace und Datumsintervall in der WHERE-Klausel) angelegt werden sollen. Die Parameter kann ich über die Webanwendung unter HTMLDB eingeben.
Optimal wäre die Möglichkeit aus einer Prozedure heraus eine Tabelle anlegen zu können, aber soweit ich das getestet habe, ist dies nicht möglich.
Die Frage ist nur, wie ich aus HTMLDB heraus Tabellen anlegen kann.
Meine Idee dazu war in der Anwendung den entsprechenden String zusammen zu basteln und diesen dann ausserhalb ausführen zu lassen. Doch wie realisiere ich die Ausführung?


Ich hoffe hier kann mir jemand helfen oder `nen anderen Ansatz geben kann.

Vielen Dank



und wenn ich schon mal dabei bin
habt ihr ne optimale vorgehensweise parat bei der ich so ca. 20 felder einer tabelle auslese und als eine zeile über UTL-File in einer datei zu speichern
ich würde das bis dato so lösen etwa 5 spalten in einem string zu speichern und dann die ganzen strings nochmal bei dem UTL-Befehl zusammen zu packen.
ich glaub n cursor is zu klein ... sind mindestens 4000 zeichen
 
SchwarzerMond hat gesagt.:
...
Meine Idee dazu war in der Anwendung den entsprechenden String zusammen zu basteln und diesen dann ausserhalb ausführen zu lassen. Doch wie realisiere ich die Ausführung?
...

Hi, 2 Möglichkeiten (ungetestet, deshalb keine Garantie, dass sie funktionieren):
1. du bastelst die den CREATE TABLE... - String in deiner Anwendung zurecht und führst ihn mit EXEC aus, also EXEC CREATE TABLE... (Das funktioniert jedenfalls beim SQL Server, ob es auch unter Oracle funktioniert, kann ich nicht sagen)
oder 2. du legst die Prozedur mit deiner Anwendung an und löschst sie nach dem Ausführen wieder (zugegeben, eine sehr umständliche Variante)
 
äähm, idee nummer1 kam mir auch schon, problem: funktioniert nich
ich kann morgen auf arbeit gern mal alle möglichen befehle schreiben ...

und nummer 2 is blöd, da das ne anwendung werden soll um unteranderem gerade sowas zu vermeiden ....

aber danke trotzdem *g*
 
Zu deinem 1. Problem:

Da ich HTMLDB nach 20 min Test wieder gelöscht habe, kann ich da leider nicht viel zu sagen, aber wo liegt dein Problem beim anlegen einer Tabelle per Prozedur ?

Code:
SQL> CREATE OR REPLACE PROCEDURE create_table(
  2      tabname IN VARCHAR2,
  3      tsname  IN VARCHAR2,
  4      success OUT NUMBER
  5      ) AUTHID CURRENT_USER IS
  6
  7      v_str   VARCHAR2(4000);
  8
  9  BEGIN
 10
 11      v_str := 'CREATE TABLE ' || tabname || ' ( ' ||
 12               '  field1 NUMBER(3) NOT NULL, ' ||
 13               '  field2    VARCHAR2(10) NOT NULL ' ||
 14               ') TABLESPACE ' || tsname;
 15
 16      EXECUTE IMMEDIATE v_str;
 17
 18      SELECT  count(*)
 19      INTO    success
 20      FROM    user_objects
 21      WHERE   object_name = UPPER( tabname );
 22
 23  END;
 24  /

Prozedur wurde angelegt.

SQL> VAR succ NUMBER
SQL> EXEC create_table( 'mytable', 'users', :succ );

PL/SQL-Prozedur wurde erfolgreich abgeschlossen.

SQL> print succ

      SUCC
----------
         1

Was ich allerdings nicht verstanden habe: Wie soll das mit dem Datumsintervall in der WHERE Klausel
 
ich steh dem etwas kritisch gegenüber, ob da htmldb auch mitmacht

jaaa ich find das programm an sich nich schlecht aber umständlich ohne ende

also ich probier das morgen und dann gibt es antwort *g*

das mit dem intervall ist einfach nur, das nur daten für nen bestimmten zeitraum ermittelt werden soll ... das is nich das ding ... geht halt um das anlegen an sich .... ich werds versuchen, danke erstmal
aber ich wette (so wie ich htmldb mittlerweile kenne) wird es mir den gefallen nicht tun, das zu machen

mal schaun
 
das sah schon richtig gut aus und ich hatte auch schon kurz die hoffnung es würde klappen, aber leider leider leider kommt htmldb mit dem IMMEDIATE nicht klar, bzw kann es sein, das ich dafür nich ausreichend rechte habe

das is doch zum heulen hier alles :(
 
Was kommt denn für ein Fehler ? ORA-
Kannst du die Prozedur wie in meinem Beispiel per Hand in SQL*Plus ausführen oder gibts da auch schon Probleme ?
 
Hat sich erledigt, war n Rechteproblem, welche ich nun hoffentlich recht schnell bekomme.

Gaaaanz herzlichen dank, denn dann klappt das so *gggg*

danke danke danke
 
Zurück