Bosh sahifa Wiki Parameter

Parameter

Parameter — procedure, function, query yoki boshqa dasturiy birlik qabul qiladigan qiymat uchun e’lon qilingan nomli yoki pozitsion o‘rin. E’londagi parameter kutiladigan tur va rolni belgilaydi; chaqiruv vaqtida unga berilgan aniq qiymat argument deb ataladi. Amaliy nutqda ikki atama ko‘pincha bir-birining o‘rnida ishlatiladi.

Yo‘nalish va tur

Stored procedure kontekstida parameter yo‘nalishi ko‘rsatilishi mumkin. IN qiymatni caller’dan routine’ga beradi. OUT procedure hisoblagan qiymatni caller’ga qaytaradi. INOUT esa boshlang‘ich qiymatni qabul qilib, yangilangan qiymatni qaytaradi. Barcha DBMSlar aynan shu kalit so‘z va semantikani qo‘llamaydi.

Data type ruxsat etilgan qiymatlar va uzatish formatini chegaralaydi. Pul uchun binary floating-point o‘rniga kerakli aniqlikdagi decimal tanlanishi mumkin. String uzunligi, character encoding, vaqt zonasi va NULL ruxsati interfeysning bir qismidir. Implicit conversion qulay ko‘rinsa ham indeks ishlatilmasligi yoki qiymat aniqligi yo‘qolishiga sabab bo‘lishi mumkin.

Nomli va pozitsion uzatish

Pozitsion chaqiruvda argument tartibi parameter e’loniga mos keladi. Nomli chaqiruv parameter nomini ko‘rsatadi va ko‘p argumentli routine’ni o‘qishni yengillashtiradi. Default qiymat optional parameter yaratadi, biroq NULL, parameterning berilmasligi va bo‘sh string turli ma’noga ega bo‘lishi mumkin.

API rivojlanganda majburiy parameter qo‘shish eski callerlarni buzadi. Defaultli yangi parameter backward compatibility berishi mumkin, ammo default biznes ma’nosi aniq bo‘lishi kerak. Parameter nomini o‘zgartirish nomli chaqiruvlarga ta’sir qiladi.

SQL parameter binding

Parameterized query SQL matni bilan data qiymatini ajratadi:

SELECT id, name
FROM users
WHERE email = :email;

Client driver :email uchun qiymatni database protokoli orqali alohida yuboradi. Database uni SQL operatori yoki qo‘shimcha clause sifatida talqin qilmaydi. Bu qiymat joylarida SQL injectionning oldini olishning asosiy usulidir. Oddiy string escaping barcha encoding va context holatlarini ishonchli hal qilmaydi.

Parameter odatda jadval yoki ustun nomi o‘rnida ishlamaydi, chunki parser query tuzilishini planlashdan oldin bilishi kerak. Dinamik obyekt nomi zarur bo‘lsa u ishonchli allowlistdan tanlanib, DBMSning identifier quoting qoidasi bilan tuziladi.

Query plan bilan aloqasi

Prepared statement bir SQL shaklini ko‘p qiymat bilan qayta ishlatadi. Parsing xarajati kamayishi va plan cache’dan foydalanish mumkin. Shu bilan birga, selectivity qiymatga bog‘liq bo‘lsa bitta umumiy plan barcha argumentlar uchun optimal emas. Keng tarqalgan qiymat bilan noyob qiymat indeks va full scan tanloviga turlicha ta’sir qiladi.

DBMS parameter qiymatini birinchi compile vaqtida hisobga olishi, generic plan qurishi yoki runtime rejalashtirishi mumkin. Muammo o‘lchov bilan aniqlanadi; har query’ni majburan recompile qilish CPU sarfini oshirishi mumkin.

Tekshiruv chegarasi

Type tekshiruvi biznes qoidalarini to‘liq ifodalamaydi. amount DECIMAL sintaktik jihatdan to‘g‘ri bo‘lsa ham manfiy summa ruxsat etilmasligi mumkin. Routine parameter diapazoni, format va obyekt mavjudligini tekshiradi. Shu bilan birga, database constraint invariantni barcha kirish yo‘llari uchun saqlaydi.

Maxfiy parameterlar, masalan token yoki parol, query log va tracing attribute’lariga yozilmaydi. Observability qiymat o‘rniga tur, hajm yoki xavfsiz kategoriyani qayd etishi mumkin. Juda katta parameter payload memory, network va parser limitlariga ta’sir qilgani sababli request chegaralari belgilanadi.

Bog‘liq tushunchalar

Argument, Stored procedure, Prepared statement, SQL injection, Data type, Query plan, Default value, Input validation