Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Stored Procedure Systemvar. ERROR [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Stored Procedure Systemvar. ERROR


 
PHP_Pan
26-08-2010, 14:06 
 
Hi,

ich habe eine Stored Procedure geschrieben welche ich nun auf Transaktionen
umstellen bzw. verbessern möchte.
Ich komme nicht weiter wie ich abfrage ob !irgendein Fehler! bei meinem Insert
aufgetreten ist. Ich habe im Netz das hier gefunden:

IF @@ERROR = 0
BEGIN
COMMIT ....
END
ELSE ...

So wäre das auch super nur bekomme ich dann beim erstellen der Stored P.
immer den Fehler "#1193 - Unknown system variable 'ERROR'"
Jetzt dachte ich mir.. na gut dan schaue ich mal was mir PHPMYAdmin
so für Variablen anbietet.. nur nichts gefunden was ich gebrauchen könnte.

Server Version: 5.1.49-MariaDB
MySQL-Client-Version: 5.1.49-MariaDB

Kann es sein das MariaDB damit noch nicht kann? (Würde ich ausschliessen ;) aber
ich weiss es nicht.)

Danke für Antworten :danke:

 
onemorenerd
26-08-2010, 16:48 
 
@@ERROR ist eine Spezialität von MS SQL. Das gibt es in MySQL nicht.

 
PHP_Pan
26-08-2010, 19:23 
 
Danke für die Antwort.
Ich habe es jetzt so gelöst und hoffe das das Transaktionssicher ist...
hab meinem Prof. noch eine Email geschrieben evtl. Poste ich dann noch ne bessere
Lösung.

DECLARE `Constraint Violation` CONDITION FOR SQLSTATE '23000';
DECLARE EXIT HANDLER FOR NOT FOUND BEGIN ROLLBACK; SET p_out = FALSE; END;
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; END;
DECLARE EXIT HANDLER FOR SQLWARNING BEGIN ROLLBACK; END;
DECLARE EXIT HANDLER FOR `Constraint Violation` ROLLBACK;
SET p_out = TRUE;
START TRANSACTION;
--- dann die SQL Statements...
COMMIT;

Wenn wer noch Vorschläge zur Verbesserung hat oder einen anderen besseren Weg
Ich bin immer für Denkanstösse dankbar ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:13 Uhr.