|
|
SQL Statement zu lang- #23734 in section [741220] |
Sec: |
(1) Allgemeines |
Von: |
Bernhard Sander |
An: |
Harro Schippan |
Am/Um: |
20.04.2018 12:20:27 gelesen |
Hallo Harro |
Ich baue per Programm ein SQL-Statement zusammen, was ich mit &SQLStatement. ausführe. Der Insert geht auf eine lokale VFP-Datenbank. Jetzt hat die Tabelle so viele Felder, daß ich die Meldung "Line too long" bekomme. Da sind alles so Monster Feldnamen: "EmailCustomerOnWorkLoggedSpecificOnStopEmailTemplateId" Was ist die maximale Länge für ein SQL-Statement? Wie komme ich da raus ????? Gruß Harro ************************************************************************ Insert into Customer( Id , Name , SuppliedStoreId , ...... ) values( CheckNull(loJsonObject.StringOf("value.Id")), CheckNull(loJsonObject.StringOf("value.Name")), CheckNull(loJsonObject.StringOf("value.SuppliedStoreId")), ....... ) ************************************************************************
|
Schreib die Werte vor dem Makro in Variablen und setze diese in das Makro ein: v1=CheckNull(loJsonObject.StringOf("value.Id")), v2=CheckNull(loJsonObject.StringOf("value.Name")), v3=CheckNull(loJsonObject.StringOf("value.SuppliedStoreId")), TEXT TO SQLStatement Insert into Customer( Id , Name , SuppliedStoreId , ...... ) values( ?v1, ?v2, ?v3, ....... ) ENDTEXT Ich kann's grad nicht testen, es die ? müssten auch bei lokalen SQL-Befehlen funktionieren. Evtl. reicht es, wenn nur die Variablen dort stehen. Man kann Makros auch schachteln, dann muss man sich jedoch um die richtigen Gänsefüßchen kümmern: (NB: bei geschachtelten Makros darf das Endprodukt auch nicht länger als 8K sein) TEXT TO SQLStatement Insert into Customer( Id , Name , SuppliedStoreId , ...... ) values( &v1, "&v2", &v3, ....... ) ENDTEXT Oder Du stopfst die Werte in ein Objekt und verwendest INSERT INTO ... FROM NAME loObjekt Aus dem Objekt werden nur die Eigenschaften verwendet, die genauso wie die Felder benannt sind. Wenn Eigenschaften fehlen werden die entsprechenden Felder mit Default-Werten gefüllt. Gruß Bernhard Sander
|
|
|
|