Für allgemeine Fragen zur Programmierung mit PureBasic.
Kiffi
Beiträge: 10711 Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Beitrag
von Kiffi » 04.11.2009 13:33
PBFetischist hat geschrieben: Was hast du für eine SQL Server Version ?
2005 (keine Express-Version)
Mit 2008 habe ich es noch nicht probiert (ist momentan ein wenig umständlich
den jetzt zu konnektieren).
PBFetischist hat geschrieben: Jetzt fällt mir nichts mehr ein.
ich verifiziere das mal eben mit VB.Net. Mal schauen, ob ich da einen
Rückgabewert bekomme...
// EDIT: In VB.Net mit einem OdbcDataAdapter bekomme ich ebenfalls nichts
zurück. Somit können wir zumindest schon mal ausschließen, dass es ein
PB-Bug ist...
Grüße ... Kiffi
a²+b²=mc²
mk-soft
Beiträge: 3845 Registriert: 24.11.2004 13:12
Wohnort: Germany
Beitrag
von mk-soft » 05.11.2009 20:09
Habe mal den Trace von ODBC aktiviert.
bekomme nach dem Aufruf der Procedure bei Fetch eine SQL-Error das der Cursor ungültig ist.
Den genauen Trace habe ich in der Firma.
Kiffi
Beiträge: 10711 Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Beitrag
von Kiffi » 05.11.2009 21:11
mk-soft hat geschrieben: Habe mal den Trace von ODBC aktiviert.
ODBC ist zwingend nötig? Ansonsten könntest Du ja mit ADODB und PureDispHelper / COMate / ADOmate darauf zugreifen.
Grüße ... Kiffi
a²+b²=mc²
mk-soft
Beiträge: 3845 Registriert: 24.11.2004 13:12
Wohnort: Germany
Beitrag
von mk-soft » 11.11.2009 18:30
Habe das Aufrufen von Proceduren mal komplett getestet.
Innerhalb der SQL Procedure wird mit "SELECT wert AS RecID" ein Record angelegt und mit "Return" die Procedure verlassen.
Mit PB funktioniert der Aufruf der Procedure nicht. Vermutlich bei "SQLSetStmtAttr" ein ungültiger Pointer übergeben.
Die Lösung mit SQL-API funktioniert.
ODBC-Trace mit PB-Funktionen
Code: Alles auswählen
PureBasic_Compi c34-c10 ENTER SQLAllocHandle
SQLSMALLINT 1 <SQL_HANDLE_ENV>
SQLHANDLE 00000000
SQLHANDLE * 004336D0
PureBasic_Compi c34-c10 EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 1 <SQL_HANDLE_ENV>
SQLHANDLE 00000000
SQLHANDLE * 0x004336D0 ( 0x007d1540)
PureBasic_Compi c34-c10 ENTER SQLSetEnvAttr
SQLHENV 007D1540
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 0x00000003
SQLINTEGER -6
PureBasic_Compi c34-c10 EXIT SQLSetEnvAttr with return code 0 (SQL_SUCCESS)
SQLHENV 007D1540
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 0x00000003 (BADMEM)
SQLINTEGER -6
PureBasic_Compi c34-c10 ENTER SQLAllocHandle
SQLSMALLINT 2 <SQL_HANDLE_DBC>
SQLHANDLE 007D1540
SQLHANDLE * 0012FF64
PureBasic_Compi c34-c10 EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 2 <SQL_HANDLE_DBC>
SQLHANDLE 007D1540
SQLHANDLE * 0x0012FF64 ( 0x007d15e8)
PureBasic_Compi c34-c10 ENTER SQLConnectW
HDBC 007D15E8
WCHAR * 0x007D16F0 [ -3] "TestBedasoft\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
PureBasic_Compi c34-c10 EXIT SQLConnectW with return code 1 (SQL_SUCCESS_WITH_INFO)
HDBC 007D15E8
WCHAR * 0x007D16F0 [ -3] "TestBedasoft\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
DIAG [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]Der Datenbankkontext wurde auf 'Bedasoft' geändert. (5701)
DIAG [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]Die Spracheneinstellung wurde auf Deutsch geändert. (5703)
PureBasic_Compi c34-c10 ENTER SQLAllocHandle
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D15E8
SQLHANDLE * 0012FF60
PureBasic_Compi c34-c10 EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D15E8
SQLHANDLE * 0x0012FF60 ( 0x007d1f48)
PureBasic_Compi c34-c10 ENTER SQLFreeHandle
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D1F48
PureBasic_Compi c34-c10 EXIT SQLFreeHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D1F48
PureBasic_Compi c34-c10 ENTER SQLAllocHandle
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D15E8
SQLHANDLE * 009AFAEC
PureBasic_Compi c34-c10 EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D15E8
SQLHANDLE * 0x009AFAEC ( 0x007d1f48)
PureBasic_Compi c34-c10 ENTER SQLSetStmtAttr
SQLHSTMT 007D1F48
SQLINTEGER 6 <SQL_ATTR_CURSOR_TYPE>
SQLPOINTER 0x00000002
SQLINTEGER 0
PureBasic_Compi c34-c10 EXIT SQLSetStmtAttr with return code 0 (SQL_SUCCESS)
SQLHSTMT 007D1F48
SQLINTEGER 6 <SQL_ATTR_CURSOR_TYPE>
SQLPOINTER 0x00000002 (BADMEM)
SQLINTEGER 0
PureBasic_Compi c34-c10 ENTER SQLExecDirect
HSTMT 007D1F48
UCHAR * 0x008E5698 [ 32] "EXECUTE [dbo].[qp_Add_Langtexte]"
SDWORD 32
PureBasic_Compi c34-c10 EXIT SQLExecDirect with return code 0 (SQL_SUCCESS)
HSTMT 007D1F48
UCHAR * 0x008E5698 [ 32] "EXECUTE [dbo].[qp_Add_Langtexte]"
SDWORD 32
PureBasic_Compi c34-c10 ENTER SQLNumResultCols
HSTMT 007D1F48
SWORD * 0x0012FF60
PureBasic_Compi c34-c10 EXIT SQLNumResultCols with return code 0 (SQL_SUCCESS)
HSTMT 007D1F48
SWORD * 0x0012FF60 (0)
PureBasic_Compi c34-c10 ENTER SQLFetch
HSTMT 007D1F48
PureBasic_Compi c34-c10 EXIT SQLFetch with return code -1 (SQL_ERROR)
HSTMT 007D1F48
DIAG [24000] [Microsoft][ODBC SQL Server Driver]Invalid cursor state (0)
PureBasic_Compi c34-c10 ENTER SQLFreeHandle
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D1F48
PureBasic_Compi c34-c10 EXIT SQLFreeHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D1F48
PureBasic_Compi c34-c10 ENTER SQLAllocHandle
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D15E8
SQLHANDLE * 009AFAEC
PureBasic_Compi c34-c10 EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D15E8
SQLHANDLE * 0x009AFAEC ( 0x007d1f48)
PureBasic_Compi c34-c10 ENTER SQLFreeHandle
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D1F48
PureBasic_Compi c34-c10 EXIT SQLFreeHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 3 <SQL_HANDLE_STMT>
SQLHANDLE 007D1F48
PureBasic_Compi c34-c10 ENTER SQLDisconnect
HDBC 007D15E8
PureBasic_Compi c34-c10 EXIT SQLDisconnect with return code 0 (SQL_SUCCESS)
HDBC 007D15E8
PureBasic_Compi c34-c10 ENTER SQLFreeHandle
SQLSMALLINT 2 <SQL_HANDLE_DBC>
SQLHANDLE 007D15E8
PureBasic_Compi c34-c10 EXIT SQLFreeHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 2 <SQL_HANDLE_DBC>
SQLHANDLE 007D15E8
ODBC-Trace mit API
Code: Alles auswählen
PureBasic_Compi c44-c34 ENTER SQLAllocHandle
SQLSMALLINT 1 <SQL_HANDLE_ENV>
SQLHANDLE 00000000
SQLHANDLE * 00433658
PureBasic_Compi c44-c34 EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS)
SQLSMALLINT 1 <SQL_HANDLE_ENV>
SQLHANDLE 00000000
SQLHANDLE * 0x00433658 ( 0x007d1540)
PureBasic_Compi c44-c34 ENTER SQLSetEnvAttr
SQLHENV 007D1540
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 0x00000003
SQLINTEGER -6
PureBasic_Compi c44-c34 EXIT SQLSetEnvAttr with return code 0 (SQL_SUCCESS)
SQLHENV 007D1540
SQLINTEGER 200 <SQL_ATTR_ODBC_VERSION>
SQLPOINTER 0x00000003 (BADMEM)
SQLINTEGER -6
PureBasic_Compi c44-c34 ENTER SQLAllocEnv
HENV * 0042E69C
PureBasic_Compi c44-c34 EXIT SQLAllocEnv with return code 0 (SQL_SUCCESS)
HENV * 0x0042E69C ( 0x007d15e8)
PureBasic_Compi c44-c34 ENTER SQLAllocConnect
HENV 007D15E8
HDBC * 0042E6A0
PureBasic_Compi c44-c34 EXIT SQLAllocConnect with return code 0 (SQL_SUCCESS)
HENV 007D15E8
HDBC * 0x0042E6A0 ( 0x007d1690)
PureBasic_Compi c44-c34 ENTER SQLConnectW
HDBC 007D1690
WCHAR * 0x007D1798 [ -3] "TestBedasoft\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
PureBasic_Compi c44-c34 EXIT SQLConnectW with return code 1 (SQL_SUCCESS_WITH_INFO)
HDBC 007D1690
WCHAR * 0x007D1798 [ -3] "TestBedasoft\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
WCHAR * 0x1F7A9D2C [ -3] "******\ 0"
SWORD -3
DIAG [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]Der Datenbankkontext wurde auf 'Bedasoft' geändert. (5701)
DIAG [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]Die Spracheneinstellung wurde auf Deutsch geändert. (5703)
PureBasic_Compi c44-c34 ENTER SQLAllocStmt
HDBC 007D1690
HSTMT * 0042E6A4
PureBasic_Compi c44-c34 EXIT SQLAllocStmt with return code 0 (SQL_SUCCESS)
HDBC 007D1690
HSTMT * 0x0042E6A4 ( 0x007d1ff0)
PureBasic_Compi c44-c34 ENTER SQLExecDirect
HSTMT 007D1FF0
UCHAR * 0x008E4700 [ -3] "EXECUTE [dbo].[qp_Add_Langtexte]\ 0"
SDWORD -3
PureBasic_Compi c44-c34 EXIT SQLExecDirect with return code 0 (SQL_SUCCESS)
HSTMT 007D1FF0
UCHAR * 0x008E4700 [ -3] "EXECUTE [dbo].[qp_Add_Langtexte]\ 0"
SDWORD -3
PureBasic_Compi c44-c34 ENTER SQLNumResultCols
HSTMT 007D1FF0
SWORD * 0x0012FF64
PureBasic_Compi c44-c34 EXIT SQLNumResultCols with return code 0 (SQL_SUCCESS)
HSTMT 007D1FF0
SWORD * 0x0012FF64 (1)
PureBasic_Compi c44-c34 ENTER SQLFetch
HSTMT 007D1FF0
PureBasic_Compi c44-c34 EXIT SQLFetch with return code 0 (SQL_SUCCESS)
HSTMT 007D1FF0
PureBasic_Compi c44-c34 ENTER SQLGetData
HSTMT 007D1FF0
UWORD 1
SWORD 4 <SQL_C_LONG>
PTR <unknown type>
SQLLEN 4
SQLLEN * 0x0012FF68
PureBasic_Compi c44-c34 EXIT SQLGetData with return code 0 (SQL_SUCCESS)
HSTMT 007D1FF0
UWORD 1
SWORD 4 <SQL_C_LONG>
PTR <unknown type>
SQLLEN 4
SQLLEN * 0x0012FF68 (4)
PureBasic_Compi c44-c34 ENTER SQLFreeStmt
HSTMT 007D1FF0
UWORD 1 <SQL_DROP>
PureBasic_Compi c44-c34 EXIT SQLFreeStmt with return code 0 (SQL_SUCCESS)
HSTMT 007D1FF0
UWORD 1 <SQL_DROP>
PureBasic_Compi c44-c34 ENTER SQLDisconnect
HDBC 007D1690
PureBasic_Compi c44-c34 EXIT SQLDisconnect with return code 0 (SQL_SUCCESS)
HDBC 007D1690
PureBasic_Compi c44-c34 ENTER SQLFreeConnect
HDBC 007D1690
PureBasic_Compi c44-c34 EXIT SQLFreeConnect with return code 0 (SQL_SUCCESS)
HDBC 007D1690
PureBasic_Compi c44-c34 ENTER SQLFreeEnv
HENV 007D15E8
PureBasic_Compi c44-c34 EXIT SQLFreeEnv with return code 0 (SQL_SUCCESS)
HENV 007D15E8
Ich denke das es ein Bug ist.