# Delimiter mit oxDb setzen

**URL:** <https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358>\
**Category:** Deutsches Forum\
**Tags:** development\
**Created:** [March 9, 2015, 6:23pm UTC](https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358 "2015-03-09T18:23:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![tj\_schneider](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/tj_schneider/32/112_2.png) [@tj\_schneider](https://forum.oxid-esales.com/u/tj_schneider)\
**Post date:** [March 9, 2015, 6:23pm UTC](https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358/1 "2015-03-09T18:23:05Z")

</div>

Hallo Freunde der Nacht,

ich habe gerade das Problem, dass ich in einem Modul eine Stored Procedure einrichten muss. Das funktioniert auch wunderbar, wenn ich das in der SQL DB direkt mache. Packe ich das ganze aber in ein execute der oxlegacydb, dann meckert er immer. Scheinbar hat er mit DELIMITER ein Problem. Selbst wenn ich das alleine ausführe kommt die Fehlermeldung. “Check your syntax…”

Hatte schonmal jemand das Problem? Oder hat jemand noch eine andere Idee (Parameterübergabe oder ähnliches…). Hier noch der SQL Code, den ich ausführen möchte:

```auto

DELIMITER $$
            create procedure YSAddColumnUnlessExists(
	            IN tableName tinytext,
	            IN fieldName tinytext,
	            IN fieldDef text)
            begin
            	IF NOT EXISTS (
		            SELECT * FROM information_schema.COLUMNS
		            WHERE column_name=fieldName
		            and table_name=tableName
		        )
	            THEN
		            set @ddl=CONCAT('ALTER TABLE ',tableName,' ADD COLUMN ',fieldName,' ',fieldDef);
            		prepare stmt from @ddl;
		            execute stmt;
	            END IF;
            end$$
DELIMITER;

```

Beste Grüße,  
Thorsten

---

<div class="post-metadata">

**Author:** ![leofonic](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/leofonic/32/58_2.png) [@leofonic](https://forum.oxid-esales.com/u/leofonic)\
**Post date:** [March 10, 2015, 2:37pm UTC](https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358/2 "2015-03-10T14:37:10Z")

</div>

Hatte das Problem auch aber leider keine Lösung gefunden (liegt an ADOdb).

---

<div class="post-metadata">

**Author:** ![tj\_schneider](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/tj_schneider/32/112_2.png) [@tj\_schneider](https://forum.oxid-esales.com/u/tj_schneider)\
**Post date:** [March 16, 2015, 10:11am UTC](https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358/3 "2015-03-16T10:11:21Z")

</div>

Hi leofonic,

ich habe eben nochmal geprüft und erstaunlich finde ich, dass das bei anderen Installationen läuft. Ich mach hier in den nächsten Tagen mal noch ein paar Tests. Vor allem würde mich da jetzt natürlich mal brennend interessieren, ob das nur bei bestimmten Kombinationen auftritt, oder vielleicht sogar an der MySQL Konfiguration liegt.

Aber an dieser Stelle eine damit verbundene Frage. Ich benutze die Stored Procedure um bei einer Modulinstallation Felder in Tabellen anzulegen, die es noch nicht gibt. Möglicherweise wolltest Du es für den selben Zweck verwenden? Wenn ja, hast Du eine (effiziente und fehlertolerante) Alternative gefunden?

Grüße,  
Thorsten

---

<div class="post-metadata">

**Author:** ![leofonic](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/leofonic/32/58_2.png) [@leofonic](https://forum.oxid-esales.com/u/leofonic)\
**Post date:** [March 16, 2015, 12:53pm UTC](https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358/4 "2015-03-16T12:53:02Z")

</div>

Vielleicht nutzen die ja mysqli?  
Alternativen fallen mir ein: Logik in PHP statt in stored procedures. Oder den Anwender die Query manuell ausführen lassen. Oder selbst eine DB-Connection herstellen und den Query direkt ohne ADODB ausführen.

---

<div class="post-metadata">

**Author:** ![martin.wegele](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/m/51bf81/32.png) [@martin.wegele](https://forum.oxid-esales.com/u/martin.wegele)\
**Post date:** [March 17, 2015, 11:28am UTC](https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358/5 "2015-03-17T11:28:27Z")

</div>

[QUOTE=thorsten.schneider;157382]  
ich habe eben nochmal geprüft und erstaunlich finde ich, dass das bei anderen Installationen läuft. Ich mach hier in den nächsten Tagen mal noch ein paar Tests. Vor allem würde mich da jetzt natürlich mal brennend interessieren, ob das nur bei bestimmten Kombinationen auftritt, oder vielleicht sogar an der MySQL Konfiguration liegt.  
[/QUOTE]  
Kann es an der MySQL-Version liegen?

[QUOTE=thorsten.schneider;157382]  
Aber an dieser Stelle eine damit verbundene Frage. Ich benutze die Stored Procedure um bei einer Modulinstallation Felder in Tabellen anzulegen, die es noch nicht gibt. Möglicherweise wolltest Du es für den selben Zweck verwenden? Wenn ja, hast Du eine (effiziente und fehlertolerante) Alternative gefunden?  
[/QUOTE]  
Ich habe da mal eine Methode in der updateApp zu gesehen. Schau mal in eine der Dateien in updateApp/updates/php/. Da müsste es so etwas geben:

```php
class update_5_1_6 extends updateBase
{
/**
* default action, used in start update
*
* @var string
*/
protected $_sDefaultAction = 'updateSqlFromPHP';
/**
* Continue update with sql script
*
* @return string
*/
public function updateSqlFromPHP()
{
$dbManager = new oxDbMetaDataHandler();
if( !$dbManager->fieldExists('OXSHOWCUSTOMAGREEMENT','oxarticles') ) {
    oxDb::getDb()->execute("ALTER TABLE `oxarticles` ADD OXSHOWCUSTOMAGREEMENT` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Show custom agreement check in checkout';");

```

---

<div class="post-metadata">

**Author:** ![system](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/system/32/4245_2.png) [@system](https://forum.oxid-esales.com/u/system)\
**Post date:** [July 13, 2026, 8:26pm UTC](https://forum.oxid-esales.com/t/delimiter-mit-oxdb-setzen/72358/6 "2026-07-13T20:26:06Z")

</div>

Closed on July 13, 2026, 8:26pm UTC


