Cum se trece la parametrul procedurii Stored = null
Oameni, ajuta! Este necesar să se transmită parametrii CP, inclusiv parametrul poate fi nul.
imprimare # xA0; "S_TGUIEventHintProps - procedura de lucru cu setările instrucțiunilor către operatorul posturilor de lucru privind evenimentele"
merge
dacă există (selectați * din sysobjects unde id = object_id (N "[S_TGUIEventHintProps]") și OBJECTPROPERTY (id, N "IsProcedure"
drop procedure [S_TGUIEventHintProps]
GO
CREATE PROCEDURE S_TGUIEventHintProps
@ActNam varchar (32) = "NONE",
@ObjID int = -1,
@ObjOwner int = NULL,
@ObjNam varchar (64) = "",
@ObjLab varchar (64) = "",
@ObjOrd int = -1,
@ObjMsk tinyint = 255,
@ObjNot varchar (255) = "",
@ObjStat int = 0,
@GUICTop int = -1,
@GUICLeft int = -1,
@GUICWidth int = -1,
@GUICHeight int = -1,
@GUICAnchors int = -1,
@GUICAalign int = -1,
@DSCod int = NULL,
.
Da, dar cum de la Delphi să treacă parametrul = null, dacă acesta, de exemplu, Integer?
Dacă faceți acest lucru:
DataForm.StoredProc1.ParamByName ("@ param1") AsInteger = Null
nu funcționează - spune că nerecunoașterea tipurilor, dacă este deloc acest parametru este omisă - spune că nu există suficienți parametri. Cum sa fii?
Pe scurt, uitați-vă la lucrul cu tipul Variant.
Shl @ este exact necesară în numele parametrului.
@ param1 - acesta este modul în care parametrul de intrare este descris în HP.
Și de ce nu?
DataForm.StoredProc1.ParamByName ("param1") Valoare: = null; ?
Delphi percepe în mod normal, dar când execută ExecProc, apare un mesaj despre lipsa parametrilor de intrare, adică parametrul nu este trecut.
Efectuați un parametru (în HP) = null și nu treceți nimic deloc (dacă Delphi nu se certa) sau Value: = null
> Pentru că aceasta este MSSQL. Numele parametrilor pe @ începe.
>
>
Imaginați-vă, știu foarte bine. Și în TStoredProc este necesar să specificăm numele complet al parametrului? Cu "câine"? Sau la fel?
Pur și simplu, am folosit acest gunoi (TStoredProc) ultima oară cam acum 6 ani.
Ei bine, poate, poate. Tot nu o folosesc.
Apropo, și dacă nu treceți deloc parametrul în cazul null, nu merge din componenta nulă la parametru, în mod implicit?
vezi [1], acolo este evidențiat bold.
> # xA0; nu merge din componenta null la parametru, implicit?
VarIsEmpty, VarIsNull, VarIsClear
citiți despre opțiuni
> 18.19
nu despre asta.
pe server o procedură cu trei parametri.
creați tstoredproc, treceți primele două. executa.
> pe procedura serverului cu trei parametri.
> creați tstoredproc, treceți primele două. executa.
Încă o dată: ce împiedică configurarea parametrului în mod prestabilit direct în HP?
> cine a spus că ar trebui să fie nul implicit în hp?
>
Apoi nu înțeleg deloc nimic.
Dați antetul HP și codul pentru formarea TStoredProc pe client.
ceva <цитата> Am dat peste cap.
Desigur, cotațiile lor trebuie schimbate.
Multumesc! Totul a funcționat! Se pare că Delphi buggy!
A funcționat ca Ega23 a scris: inițializat parametrul dorit = null în antetul lui KP și pur și simplu a trecut acest parametru atunci când a fost sunat de la Delphi.
> Se pare că Delphi buggy!