ugrás a tartalomhoz

uniqueidentifier típus mssql_bind-ben

TIV · 2010. Feb. 22. (H), 17.04
Sziasztok!

Először használok MSSQL-t és tárolt eljárásokat, kérlek segítsetek.
Adott: ubuntu + php 5.2.12 + freetds 0.82

Szóval megvan az mssql_init. Utána jön a bindelés. Van egy kód nevű bemenet és egy id nevű kimenet. A kimenetről annyit lehet tudni, hogy uniqueidentifier típusú. Nem tudom viszont, hogy ebben az esetben mit írjak a 4 paraméterhez, azaz a típushoz. Próbának beírtam SQLVARCHAR-t, de gyanítom ezért kapok hibaüzenetet (lent).

$stmt = mssql_init('az_eljaras_neve');

$kod 	= "1212";
$id 	= "";

mssql_bind($stmt, '@KOD', $kod, SQLVARCHAR, FALSE, FALSE, 20);
mssql_bind($stmt, '@ID', $id, SQLVARCHAR, TRUE, FALSE, 200);

mssql_execute($stmt);
Hibaüzenet:
Warning: mssql_execute() [function.mssql-execute]: message: Invalid object name '*******.dbo.******'. (severity 16) in /usr/local/apache2/htdocs/index.php on line 57

Warning: mssql_execute() [function.mssql-execute]: General SQL Server error: Check messages from the SQL Server (severity 16) in /usr/local/apache2/htdocs/index.php on line 57

Warning: mssql_execute() [function.mssql-execute]: message: Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 0, current count = 1. (severity 16) in /usr/local/apache2/htdocs/index.php on line 57

Warning: mssql_execute() [function.mssql-execute]: General SQL Server error: Check messages from the SQL Server (severity 16) in /usr/local/apache2/htdocs/index.php on line 57

Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in /usr/local/apache2/htdocs/index.php on line 57


Szóval lenne pár kérdésem...

1. Mit írjak a 4 paraméterhez típusnak uniqueidentifier mező esetén?
2. Execute után az $id változómnak fel kellene vennie az id mező értékét?

Előre is köszönöm a segítő szavakat!
 
1

SQLUNIQUE

TIV · 2010. Feb. 23. (K), 10.36
A php_mssql.c és h fájlokban megtaláltam, hogy SQLUNIQUE típusúnak kell lennie, viszont most a következő hibaüzenetet kapom:
Warning: mssql_bind() [function.mssql-bind]: unsupported type in /usr/local/apache2/htdocs/index.php on line 54
Megnéztem a php_mssql.h fájlt, ez szerepel benne:

#ifdef SQLUNIQUE /* FreeTSD 0.61+ */
#define SQLUNIQUE SYBUNIQUE
#endif

Habár nem tudom ez a feltétel mikor lesz igaz, kiszedtem az ifdef-et, de fordításnál hibát kapok (már meg se lepődök):

php_mssql.c:862: error: ‘SYBUNIQUE’ undeclared (first use in this function)

Kezdek belefáradni, hiba hiba hátán. Van valakinek működő megoldása arra, hogyan lehet egyszerűen elérni/kezelni php-ből mssql-t ubuntu alatt?? (tárolt eljárásokkal dolgoznék főként) Jó ez a FreeTDS csak elég kevés a tutorial hozzá olyan linux hülyéknek, mint én. Köszönöm! Nagyon!
2

MEGOLDÁS

TIV · 2010. Feb. 23. (K), 13.07
Sziasztok!

Nagyon tudom utálni amikor vki kérdez vmit, rájön magától, de a megoldást nem teszi közzé. Szóval sikerült megoldanom a fenti problémát:

Habár FreeTDS-ben valóban van egy SQLUNIQUE típus, én nem igazán tudtam hasznát venni/használni. Viszont! Az uniqueidentidier tulajdonkeppen egy egyszerű 16 bites, bináris adattípus, csak attól hivják uniqueidentifiernek, hogy egy speciális algoritmus generálja. Azaz ha a mssql_bind-ben SQLVARCHAR-nek állítom be, akkor vissza fogom kapni és megy, tényleg! Viszont az első bejegyzésemben is ezt írtam, akkor viszont még nem ment. Egy ismerős azt mondta, hogy az MSSQL szerver vacakolni szokott a titkosított forráskódú tárolt eljárások esetében. Egyszerűen csak újra kellett indítani a szervert és már ment is!

Remélem segítettem valakinek!