sql >> Databasteknik >  >> RDS >> Oracle

Finjustering av Oracle DG40DBC

Nyligen delade en kund en lösning som löste ett problem som uppstod när vi använde vår SQL Server ODBC-drivrutin för att ansluta Oracle till SQL Server. Felet som kunden fick var:

DELETE FROM mytable@MYLINKEDDATABASE
WHERE MyCol = 'MyValue';

17:01:01 [DELETE - 0 row(s), 0.000 secs] [Error Code: 2070, SQL State: 42000]
ORA-02070: database MYLINKEDDATABASE does not support some function in this context

och detta löstes av:

SQL> select fds_class_name from HS_FDS_CLASS;
ODBC11.2.0.2.0_0008
exec dbms_hs.replace_class_caps('ODBC11.2.0.2.0_0008', 564,'ODBC11.2.0.2.0_0008',564,
	                                                                 8191,NULL,1);

PL/SQL procedure successfully completed.

SQL> commit;

Commit complete

I Oracle kommer "SELECT FDS_CLASS_NAME FROM HS_FDS_CLASS" att returnera en sträng som identifierar din DG4ODBC-version. T.ex.:

ODBC11.2.0.2.0_0008

Kör den här frågan:

SELECT * FROM HS_CLASS_CAPS WHERE FDS_CLASS_NAME ='ODBC11.2.0.2.0_0008';

returnerar ett antal "funktioner" som visar hur DG4ODBC är konfigurerat för att bete sig.

I exemplet som visades tidigare var kolumnen kunden en NVARCHAR typ. Under ledning av Oracle-support ändrar kunden hur DG4ODBC betedde sig med avseende på denna datatyp.

Kunden hittade det relevanta fältet i HS_CLASS_CAPS :

564 TO_NCHAR(op1) 0

och ändrade det med Oracle-paketet, DBMS_HS.ALTER_CLASS_CAPS .

Observera att vad de olika DG4ODBC-funktionerna gör inte, verkar det som, är dokumenterade någonstans offentligt. Den här bloggen kan därför inte ge specifik vägledning om hur man använder dem för att lösa ett specifikt problem. Istället tillhandahålls bloggen för att göra dig medveten om att du har ett annat verktyg till ditt förfogande. Om du redigerar parametrar i DG4ODBC-konfigurationsfilen löser inte init.ora några problem du har med din DG4ODBC-anslutning.

Se även

  • Ta bort eller uppdatera uttalande med TG4MSQL 10.2 eller DG4ODBC 11.2 som refererar till Nvarchar-fältet där klausul ger ORA-2070-fel
  • Angående:Problem med Oracle Database Gateway för ODBC och Unicode

  1. Varför ger denna SQL-kod fel 1066 (Inte unik tabell/alias:'användare')?

  2. ska jag aktivera c3p0-satspoolning?

  3. SQLite PRIMARY key AutoIncrement fungerar inte

  4. Views SELECT innehåller en underfråga i FROM-satsen