Ahoj,
máme XE10.3.3 + FD + MSSQL. Při vykonávaní st. procedur používám TFDStoredProc s relativně defaultním nastavením. Po nastavení názvu procedury a nahození PREPARED = TRUE si FD automaticky přes metadata stáhne parametry. Potud je vše ok.
Problém je ovšem s defaultní hodnotou parametrů těch stored proc.
Pochopil jsem z profileru, že FD ty parametry pošle vždy všechny bez ohledu na to, jestli jsou NULL a MSSQL server potom ty NULL bere jako validní vstup a nepoužije ty defaultní (tomu se asi není co divit).
Ve svém zkoumání jsem ještě zjistil, že ADO to dělá stejně (taky stáhne a posílá celý param list), ale každý parametr má ještě property Attributes tam se dá odškrtnout NULLABLE a potom pošle TADOStoredProc ten parametr s hodnotou "default" a MSSQL už jede OK.
Možnost toho, že ty parametry nebudu stahovat automaticky ale manuálně je v kodu doplňovat bohužel zatím nepřipadá v úvahu.
Zkoušel jsem taky ten param list procházet, hledat NULL a ty odstranit, to zase působí chybu protože ta StoredProc už je prepared a brání se potom tomu.
SOS možnost je dát té TFDStoredProc prepared := false, odebrat FetchOptions.Items := FetchOptions.Items - [fiMeta], dát prepared znovu a ty parametry tam ručábo nacpat, ale do toho se mi nechce tak se první ptám :-)
díky za rady a nápady.