Ergebniss Tabelle von einer Prozedur erstellen

Phlippo1

Benutzer
Beiträge
9
Hey Leute,

zum Problem: über ein Access Formular starte ich eine mysql prozedur.
nun soll in einer Tabelle id, prozedur_name,ausgeführt_am,ergebniss
gespeichert werden. so dass man immer sieht wann wer die Prozedur ausgeführt hat.

ich kenne mich leider nicht so aus. kann mir vielleicht jemand helfen?
danke.
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.830
mh, aber wie?
sorry ich bin da echt nicht so helle in dem Gebiet.
Mal als Kurzdemo in PostgreSQL, MySQL kann ich nicht:

Code:
test=# create table foo (id serial, val int);
NOTICE:  CREATE TABLE will create implicit sequence "foo_id_seq" for serial column "foo.id"
CREATE TABLE
Time: 1,655 ms
test=*# create table foo_log (ts timestamp, wer text) inherits (foo);
CREATE TABLE
Time: 24,787 ms
test=*# create or replace function log_foo() returns trigger as $$begin insert into foo_log(ts, wer, id, val) values (now(), current_user, new.id, new.val); return new; end; $$language plpgsql;
CREATE FUNCTION
Time: 0,438 ms
test=*# create trigger trg_foo after insert on foo for each row execute procedure log_foo();
CREATE TRIGGER
Time: 0,314 ms
test=*#
test=*#
test=*# insert into foo (val) values(123);
INSERT 0 1
Time: 12,490 ms
test=*# select * from foo_log ;
 id | val |  ts  |  wer
----+-----+----------------------------+------------
  1 | 123 | 2013-09-03 15:55:05.443478 | kretschmer
(1 row)

Einklich einfach, mußt das halt nur auf MySQL anpassen. Das war übrigens ein Row-Trigger, also der feuert bei jeder neuen Zeile. Falls Du das 'nur' per Statement brauchst wäre das aber auch relativ einfach - Dir steht halt NEW.* nicht zur Verfügung.

Andreas

Andreas
 

ukulele

Datenbank-Guru
Beiträge
4.702
Du solltest erstmal die Prozedur finden und den Code am besten posten. Außerdem müsste man eine Logtabelle anlegen und was genau ist das "Ergebnis" der Prozedur? Eine Zahl?
 

Phlippo1

Benutzer
Beiträge
9
ok nochmals als vorgeschichte. in dem accessformular gibt es eine checkbox zur auswahl der projektnummer und ein startbutton. beim klicken auf start wird die projektnummer an die prozedur übergeben und für das jeweilige projekt angewandt.
nun soll in der log tabelle protokolliert werden, wann welches projekt ausgeführt werden.
also id automatisch generiert. fkt_name ist eigentlich immer fest. ausgeführt am soll automatisch generiert werden und als ergebniss welches projekt ausgeführt wurde.
die Logtabelle habe ich schon angelegt.
 

akretschmer

Datenbank-Guru
Beiträge
9.830
ok nochmals als vorgeschichte. in dem accessformular gibt es eine checkbox zur auswahl der projektnummer und ein startbutton. beim klicken auf start wird die projektnummer an die prozedur übergeben und für das jeweilige projekt angewandt.
nun soll in der log tabelle protokolliert werden, wann welches projekt ausgeführt werden.
also id automatisch generiert. fkt_name ist eigentlich immer fest. ausgeführt am soll automatisch generiert werden und als ergebniss welches projekt ausgeführt wurde.
die Logtabelle habe ich schon angelegt.

Ja, wo ist jetzt das Problem? Du erweiterst Deine Prozedur dahingehend, in die schon angelegte Logtabelle die Projektnummer und den aktuellen Timestamp zu speichern? Id zählt selber hoch. Damit hast doch alles, oder?
 

ukulele

Datenbank-Guru
Beiträge
4.702
Aber du bist dir sicher das die Prozedur innerhalb eines MySQL Servers läuft und nicht irgendein VB Script in deiner Access Oberfläche ist oder?
 

Phlippo1

Benutzer
Beiträge
9
Aber du bist dir sicher das die Prozedur innerhalb eines MySQL Servers läuft und nicht irgendein VB Script in deiner Access Oberfläche ist oder?
ja

mein problem ist das ich mich nicht so mit mysql auskenne und nicht wirklich weiß wie ich mit einer neuen prozedur die projektnummer etc bekomme und in die Tabelle shcreibe.
ist bestimmt sau billig, aber ist halt nicht so mein gebiet...
 

akretschmer

Datenbank-Guru
Beiträge
9.830
ja

mein problem ist das ich mich nicht so mit mysql auskenne und nicht wirklich weiß wie ich mit einer neuen prozedur die projektnummer etc bekomme und in die Tabelle shcreibe.
ist bestimmt sau billig, aber ist halt nicht so mein gebiet...

Warum 'neue' Prozedur?
@ukulele schrieb: "Das Beste wäre sicherlich innerhalb der MySQL Prozedur am Ende Ergebniss und Zeit in die Log Tabelle zu schreiben."
@akretschmer schrieb: "Du erweiterst Deine Prozedur dahingehend, in die..."
 

ukulele

Datenbank-Guru
Beiträge
4.702
INSERT INTO wirst du brauchen, ja. SELECT vermutlich nicht. Du musst die Prozedur im SQL Server finden und bearbeiten. Leider nutze ich kein MySQL sondern MS SQL aber mit einem vernünftigen SQL Client sollte man alle Prozeduren sehen und den Code dafür bearbeiten können.
 

Phlippo1

Benutzer
Beiträge
9
die Prozedur hab ich ja. irgendwie bekomm ich das aber nicht hin.

INSERTINTO s3_lv_num_log(Fkt_Name,Ergebniss) VALUES(funktion,projekt);

sollte das nicht so reichen?
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.830
die Prozedur hab ich ja. irgendwie bekomm ich das aber nicht hin.

INSERTINTO s3_lv_num_log(Fkt_Name,Ergebniss) VALUES(funktion,projekt);

sollte das nicht so reichen?

Nein, Du wolltest auch noch den Timestamp haben. Oder ist der als Default now() definiert?

Ansonsten: mit 'irgendwie bekomm ich das aber nicht hin' kommen wir hier irgendwie nicht weiter.
 
Oben