3-4- ish. Mavzu. Funktsiyalar va saqlangan protseduralarni yaratish, o'zgartirish, qo'llash va o'chirish (10 balli)


n yangi qiymat tayinlanadigan parametrning seriya raqami. Bu OUTPUT parametri bo'lishi kerak. pbData



Download 50,68 Kb.
bet11/12
Sana30.04.2022
Hajmi50,68 Kb.
#597455
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
lab ishi savoli 2

n yangi qiymat tayinlanadigan parametrning seriya raqami. Bu OUTPUT parametri bo'lishi kerak.
pbData chiqish parametrining qiymatini belgilash uchun mijozga yuboriladigan ma'lumotlarga ega buferga ko'rsatgich.
cbLen yuborilgan ma'lumotlar buferining uzunligi. Agar o'tkazilgan OUTPUT parametrining ma'lumotlar turi doimiy uzunlikdagi ma'lumotlarni aniqlasa va NULL qiymatlarni saqlashga ruxsat bermasa (masalan, SRVBIT yoki SRVINT1), u holda funktsiya cbLen parametrini e'tiborsiz qoldiradi. CbLen = 0 nol uzunlikdagi ma'lumotlarni bildiradi va fNull FALSE ga o'rnatilishi kerak.
fNull Agar qaytish parametri NULL va cbLen 0 bo'lishi kerak bo'lsa, buni TRUE ga o'rnating, aks holda funktsiya muvaffaqiyatsiz bo'ladi. Boshqa barcha holatlarda fNull = FALSE.
Muvaffaqiyatli bo'lsa, funktsiya SUCCEED ni qaytaradi. Qaytish qiymati FAIL bo'lsa, qo'ng'iroq muvaffaqiyatsiz bo'ldi. Hammasi oddiy va tushunarli
Endi biz birinchi kengaytirilgan saqlangan protseduramizni yozish uchun yetarli ma'lumotga egamiz, bu unga berilgan parametr orqali qiymat qaytaradi.Deylik, an'anaga ko'ra, bu Salom dunyo qatori bo'ladi! Misolning disk raskadrovka versiyasini bu yerdan yuklab olish mumkin.

#o'z ichiga oladi

#XP_NOERROR 0 ni aniqlang
#XP_XATOSI 1-ni aniqlang
#MAX_SERVER_ERROR 20000 ni aniqlang
#XP_HELLO_ERROR MAX_SERVER_ERROR + 1 ni aniqlang

bekor chop etish xatosi (SRV_PROC *, CHAR *);

#ifdef __cplusplus
tashqi "C" (
#endif

SRVRETCODE __declspec (dllexport) xp_helloworld (SRV_PROC * pSrvProc);

#ifdef __cplusplus
}
#endif
SRVRETCODE xp_helloworld (SRV_PROC * pSrvProc)
{
char szText = "Salom dunyo!";
BYTE bType;
ULONG cbMaxLen;
ULONG cbActualLen;
BOOL fNull;

/ * Kengaytirilgan saqlangan ob'ektlar sonini aniqlang


parametr protsedurasi * /
agar (srv_rpcparams (pSrvProc)! = 1)
{
printError (pSrvProc, "Parametrlar soni noto'g'ri!");
qaytish (XP_ERROR);
}

/ * O'tkazilgan parametrlarning ma'lumotlar turi va uzunligi haqida ma'lumot oling * /


agar (srv_paraminfo (pSrvProc, 1 va bType, & cbMaxLen,
& cbActualLen, NULL va fNull) == FAIL)
{
chop etish xatosi (pSrvProc,
"Kirish parametrlari haqida ma'lumot olinmadi ...");
qaytish (XP_ERROR);
}

/ * O'tkazilgan OUTPUT parametri parametr ekanligini tekshiring * /


agar ((srv_paramstatus (pSrvProc, 1) va SRV_PARAMRETURN) == FAIL)
{
chop etish xatosi (pSrvProc,
"O'tkazilgan parametr OUTPUT parametri emas!");
qaytish (XP_ERROR);
}

/ * O'tkazilgan parametrning ma'lumotlar turini tekshiring * /


agar (bType! = SRVBIGVARCHAR && bType! = SRVBIGCHAR)
{
printError (pSrvProc, "O'tkazilgan parametrning noto'g'ri turi!");
qaytish (XP_ERROR);
}

/ * O'tkazilgan parametr qaytarilgan satrni saqlash uchun etarlicha uzun ekanligiga ishonch hosil qiling * /


agar (cbMaxLen< strlen(szText))
{
chop etish xatosi (pSrvProc,
"O'tkazilgan parametr qaytarilgan n qatorni saqlash uchun etarlicha uzun emas!");
qaytish (XP_ERROR);
}

/ * OUTPUT parametr qiymatini o'rnating * /


agar (FAIL == srv_paramsetoutput (pSrvProc, 1, (BYTE *) szText, 13, FALSE))
{
chop etish xatosi (pSrvProc,
"OUTPUT parametrining qiymatini o'rnatolmayman ...");
qaytish (XP_ERROR);
}

srv_senddone (pSrvProc, (SRV_DONE_COUNT | SRV_DONE_MORE), 0, 1);


qaytish (XP_NOERROR);
}

bekor chop etish xatosi (SRV_PROC * pSrvProc, CHAR * szErrorMsg)


{
srv_sendmsg (pSrvProc, SRV_MSG_ERROR, XP_HELLO_ERROR, SRV_INFO, 1,
NULL, 0, 0, szErrorMsg, SRV_NULLTERM);
Srv_senddone (pSrvProc, (SRV_DONE_ERROR | SRV_DONE_MORE), 0, 0);
}
srv_sendmsg va srv_senddone funksiyalari hisobga olinmadi. srv_sendmsg funktsiyasi mijozga xabar yuborish uchun ishlatiladi. Mana uning prototipi:
int srv_sendmsg (
SRV_PROC * srvproc,
int msgtype,
DBINT xabarnomasi,
DBTINYINT sinfi,
DBTINYINT holati,
DBCHAR * rpc nomi,
int rpcnamelen,
DBUSMALLINT choyshab,
DBCHAR * xabari,
int msglen
);
msgtype mijozga yuboriladigan xabar turini belgilaydi. SRV_MSG_INFO doimiysi axborot xabarini, SRV_MSG_ERROR esa xato xabarini bildiradi;
msgnum xabar raqami;

Download 50,68 Kb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish