முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 12 · பாடம் 1 இன் 4பாடத்திட்டத்தில் 45/57~15 min
தொகுதி பாடங்கள் (1/4)

UDFகள் மற்றும் அடிப்படை SQL

இதுவரை Node.js சர்வரில் இருந்து வினவல்களை அனுப்பி வருகிறோம். ஆனால் டஜன் கணக்கான வெவ்வேறு வினவல்களில் ஒரு சூத்திரம் பயன்படுத்தப்பட்டால் (எ.கா. VAT உட்பட இறுதி விலையைக் கணக்கிடுதல்), ஜாவாஸ்கிரிப்டில் கணிதத்தை ஏன் நகலெடுக்க வேண்டும்? SQL செயல்பாடுகள் (பயனர் வரையறுக்கப்பட்ட செயல்பாடுகள் - UDF) DB க்குள் "மேக்ரோக்களை" உருவாக்குவோம்.

கணித SQL மேக்ரோவை எவ்வாறு உருவாக்குவது என்பது இங்கே:

SQL
CREATE OR REPLACE FUNCTION calculate_tax(price NUMERIC)
RETURNS NUMERIC AS $$
  SELECT price * 1.22;
$$ LANGUAGE sql;

இந்த கட்டளை இயங்கியதும், செயல்பாடு எங்கள் தரவுத்தளத்தில் எப்போதும் இருக்கும். இது எந்த வினவலிலிருந்தும் அழைக்கப்படலாம்:

SQL
SELECT name, calculate_tax(unit_price) AS price_with_tax FROM products;

மாறும் உருவாக்கம்

அவற்றின் வகைகளைக் குறிப்பிடுவதன் மூலம், எத்தனை மாறிகள் வேண்டுமானாலும் வரையறுக்கலாம், மேலும் LANGUAGE sql வினவலை இயக்கி, டாலர் குறிகளுக்கு இடையே உள்ள கடைசி அறிக்கையை மறைமுகமாக வழங்கும் $$.

நீங்களே முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#sql.m12.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

இரண்டு TEXT அளவுருக்களை ('first_name' TEXT, 'last_name' TEXT) ஏற்கும் 'get_full_name' என்ற பெயரில் அழைக்கக்கூடிய எளிய செயல்பாட்டை உருவாக்கவும்.\nஇது TEXT மதிப்பை வழங்க வேண்டும்.\nஉள்ளே, இரண்டு வாதங்களையும் அவற்றுக்கிடையே ஒரு இடைவெளியுடன் இணைக்கும் ஒரு சிறிய SELECT செய்து, அதை மொழி sql என அறிவிக்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

செயல்பாட்டை உருவாக்கவும் அல்லது மாற்றவும். ' ' || கடைசி_பெயர்; $$ LANGUAGE sql;

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#sql.m12.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

மிகவும் மேம்பட்ட UDFகளில் நாம் முழு வினவல்களையும் உட்பொதிக்கலாம். 'get_customer_count()' செயல்பாட்டை உருவாக்கவும், அது எந்த அளவுருக்களையும் ஏற்காது மற்றும் ஒரு INTEGER ஐத் திருப்பித் தருகிறது.\nஉள்ளே, ஒரு அற்பமான 'வாடிக்கையாளர்களிடமிருந்து COUNT(id) ஐத் தேர்ந்தெடுக்கவும்'.\nஅதை சுத்தமான sql மொழியாக அறிவிக்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

கவனியுங்கள்: COUNT ஆனது ஒரு பிஜின்ட்டை வழங்குகிறது, திரும்பும் வகையுடன் பொருந்த அதை INTEGER க்கு அனுப்பவும்! செயல்பாட்டை உருவாக்கவும் அல்லது மாற்றவும் get_customer_count() INTEGER ஐ $$ தேர்ந்தெடுக்கவும் (COUNT(ID) INTEGER ஆக) வாடிக்கையாளர்களிடமிருந்து; $$ LANGUAGE sql;

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்