ms sql கர்சரிலிருந்து நீக்குகிறது. MySQL இல் கர்சர்கள் சேமிக்கப்பட்ட நடைமுறைகள். A. எளிய கர்சர் மற்றும் தொடரியல் பயன்படுத்துதல்

கர்சரின் வரையறை கொடுக்கப்பட்டுள்ளது. அதன் வகைகள் மற்றும் நடத்தை பற்றிய விளக்கம் கொடுக்கப்பட்டுள்ளது: நிலையான, மாறும், தொடர் மற்றும் முக்கிய கர்சர்கள். கர்சர் கட்டுப்பாட்டின் கொள்கைகள் விவரிக்கப்பட்டுள்ளன: கர்சரை உருவாக்குதல் மற்றும் திறப்பது, தரவைப் படித்தல், கர்சரை மூடுதல். கர்சர் நிரலாக்கத்தின் எடுத்துக்காட்டுகள் கொடுக்கப்பட்டுள்ளன.

கர்சர் கருத்து

வேண்டுகோள் தொடர்புடைய தரவுத்தளம்தரவு பொதுவாக பல வரிசைகளை (பதிவுகள்) தரவை வழங்குகிறது, ஆனால் பயன்பாடு ஒரு நேரத்தில் ஒரு பதிவை மட்டுமே செயலாக்குகிறது. ஒரே நேரத்தில் பல வரிசைகளைக் கையாள்வது (உதாரணமாக, விரிதாள்கள் வடிவில் தரவைக் காட்டுவது), அவற்றின் எண்ணிக்கை இன்னும் குறைவாகவே இருக்கும். கூடுதலாக, மாற்றும் போது, ​​நீக்கும் போது அல்லது தரவு சேர்க்கும் போது, ​​வேலை அலகு தொடர் ஆகும். இந்த சூழ்நிலையில், ஒரு கர்சர் கருத்து முன்னுக்கு வருகிறது, இந்த சூழலில், கர்சர் ஒரு வரிசையை சுட்டிக்காட்டுகிறது.

SQL இல் உள்ள கர்சர் என்பது தரவுத்தள நினைவகத்தில் உள்ள ஒரு பகுதி ஆகும், இது கடைசி SQL அறிக்கையை வைத்திருக்க வடிவமைக்கப்பட்டுள்ளது. தற்போதைய அறிக்கை தரவுத்தள வினவலாக இருந்தால், தற்போதைய மதிப்பு அல்லது தற்போதைய கர்சர் கோடு எனப்படும் வினவல் தரவின் வரிசையும் நினைவகத்தில் சேமிக்கப்படும். நினைவகத்தில் குறிப்பிடப்பட்ட பகுதி பெயரிடப்பட்டது மற்றும் பயன்பாட்டு நிரல்களுக்கு அணுகக்கூடியது.

பொதுவாக, கர்சர்கள் ஒரு தரவுத்தளத்தில் சேமித்து வைக்கப்பட்டுள்ள தகவலின் துணைக்குழுவைத் தேர்ந்தெடுக்கப் பயன்படுகிறது. எந்த நேரத்திலும், ஒரு கர்சர் வரியை பயன்பாட்டு நிரல் மூலம் சரிபார்க்கலாம். நடைமுறை மொழிகளில் எழுதப்பட்ட பயன்பாட்டு நிரல்களில் உட்பொதிக்கப்பட்ட SQL அறிக்கைகளில் கர்சர்கள் பெரும்பாலும் பயன்படுத்தப்படுகின்றன. அவற்றில் சில தரவுத்தள சேவையகத்தால் மறைமுகமாக உருவாக்கப்பட்டன, மற்றவை புரோகிராமர்களால் வரையறுக்கப்படுகின்றன.

SQL தரநிலைக்கு இணங்க, கர்சர்களுடன் பணிபுரியும் போது, ​​பின்வரும் முக்கிய செயல்களை வேறுபடுத்தி அறியலாம்:

  • உருவாக்கம் அல்லது கர்சர் அறிவிப்பு;
  • கர்சரை திறக்கிறது, அதாவது பல நிலை நினைவகத்தில் சேமிக்கப்பட்ட தரவுகளுடன் அதை நிரப்புதல்;
  • கர்சரில் இருந்து தேர்வுஅதனுடன் தரவு வரிசைகளை மாற்றுதல்;
  • கர்சரை மூடுகிறது, அதன் பிறகு அது பயனர் நிரல்களுக்கு அணுக முடியாததாகிவிடும்;
  • கர்சரை விடுவிக்கிறது, அதாவது கர்சரை ஒரு பொருளாக நீக்குகிறது, ஏனெனில் அதை மூடுவது அதனுடன் தொடர்புடைய நினைவகத்தை விடுவிக்க வேண்டிய அவசியமில்லை.

செயலாக்கங்களில் கர்சரின் வரையறை சிறிது மாறுபடலாம். எடுத்துக்காட்டாக, சில நேரங்களில் ஒரு டெவலப்பர் கர்சருக்கு ஒதுக்கப்பட்ட நினைவகத்தை வெளிப்படையாக விடுவிக்க வேண்டும். பிறகு கர்சரை விடுவிக்கவும்அதனுடன் தொடர்புடைய நினைவகமும் விடுவிக்கப்படுகிறது. இது அவரது பெயரை மீண்டும் பயன்படுத்துவதை சாத்தியமாக்குகிறது. மற்ற செயலாக்கங்களில் எப்போது கர்சரை மூடுகிறதுநினைவகத்தை விடுவித்தல் மறைமுகமாக நிகழ்கிறது. மீட்கப்பட்ட உடனேயே, இது மற்ற செயல்பாடுகளுக்கு கிடைக்கும்: மற்றொரு கர்சரை திறக்கிறதுமுதலியன

சில சந்தர்ப்பங்களில், கர்சரைப் பயன்படுத்துவது தவிர்க்க முடியாதது. இருப்பினும், முடிந்தால், இது தவிர்க்கப்பட வேண்டும் மற்றும் நிலையான தரவு செயலாக்க கட்டளைகளுடன் வேலை செய்ய வேண்டும்: SELECT, UPDATE, INSERT, DELETE. கர்சர்கள் தரவின் முழு அளவிலும் மாற்றியமைக்கும் செயல்பாடுகளை அனுமதிக்காது என்ற உண்மையைத் தவிர, கர்சரைப் பயன்படுத்தி தரவு செயலாக்கச் செயல்பாடுகளைச் செய்யும் வேகம் இதை விடக் குறைவாக உள்ளது. நிலையான பொருள் SQL.

MS SQL சர்வர் சூழலில் கர்சர்களை செயல்படுத்துதல்

SQL சர்வர்மூன்று வகையான கர்சர்களை ஆதரிக்கிறது:

  • SQL கர்சர்கள் முதன்மையாக தூண்டுதல்கள், சேமிக்கப்பட்ட நடைமுறைகள் மற்றும் ஸ்கிரிப்ட்களுக்குள் பயன்படுத்தப்படுகின்றன;
  • சர்வர் கர்சர்கள் சர்வரில் இயங்குகின்றன மற்றும் ODBC, OLE DB, DB_Library க்கான பயன்பாட்டு நிரலாக்க இடைமுகத்தை செயல்படுத்துகின்றன;
  • கிளையண்ட் கர்சர்கள் கிளையண்டிலேயே செயல்படுத்தப்படுகின்றன. அவை சர்வரில் இருந்து வரிசைகளின் முழு முடிவுத் தொகுப்பையும் பெற்று உள்நாட்டில் சேமித்து வைக்கின்றன, இது நெட்வொர்க் செயல்பாடுகளில் செலவழித்த நேரத்தைக் குறைப்பதன் மூலம் தரவு செயலாக்கத்தை விரைவுபடுத்துகிறது.

பல்வேறு வகையான பல-பயனர் பயன்பாடுகளுக்கு வெவ்வேறு வகையான தரவுகளுக்கு இணையான அணுகல் தேவைப்படுகிறது. சில பயன்பாடுகளுக்கு தரவுத்தளத்தில் ஏற்படும் மாற்றங்கள் பற்றிய தகவல்களை உடனடியாக அணுக வேண்டும். டிக்கெட் முன்பதிவு அமைப்புகளுக்கு இது பொதுவானது. புள்ளிவிவர அறிக்கையிடல் அமைப்புகள் போன்ற பிற சந்தர்ப்பங்களில், தரவு நிலைத்தன்மை முக்கியமானது, ஏனெனில் அது தொடர்ந்து மாற்றியமைக்கப்பட்டால், நிரல்களால் தகவலை திறம்பட காட்ட முடியாது. வெவ்வேறு பயன்பாடுகளுக்கு கர்சர்களின் வெவ்வேறு செயலாக்கங்கள் தேவை.

SQL சர்வரில், கர்சர் வகைகள் அவை வழங்கும் திறன்களில் மாறுபடும். கர்சர் வகை அதன் உருவாக்கத்தின் கட்டத்தில் தீர்மானிக்கப்படுகிறது மற்றும் மாற்ற முடியாது. சில வகையான கர்சர்கள் முடிவுத் தொகுப்பில் உள்ள வரிசைகளில் பிற பயனர்களால் செய்யப்பட்ட மாற்றங்களைக் கண்டறிய முடியும். இருப்பினும், SQL சேவையகம் வரிசையை அணுகும்போது அத்தகைய வரிசைகளில் ஏற்படும் மாற்றங்களை மட்டுமே கண்காணிக்கும் மற்றும் வரிசையை ஏற்கனவே படித்தவுடன் மாற்றங்களை மாற்ற அனுமதிக்காது.

கர்சர்கள் இரண்டு வகைகளாக பிரிக்கப்பட்டுள்ளன: தொடர்ச்சியானமற்றும் உருட்டக்கூடியது. தொடர்ச்சியாகஒரு திசையில் மட்டுமே தரவைத் தேர்ந்தெடுக்க உங்களை அனுமதிக்கிறது - ஆரம்பம் முதல் இறுதி வரை. உருட்டக்கூடிய கர்சர்கள்அதிக செயல் சுதந்திரத்தை வழங்குதல் - இரு திசைகளிலும் நகர்த்தலாம் மற்றும் கர்சரின் முடிவுத் தொகுப்பின் தன்னிச்சையான வரிசைக்குத் தாவலாம். கர்சர்களைப் பற்றி பேசுகையில், பரிவர்த்தனை தனிமை பற்றி நாம் மறந்துவிடக் கூடாது. ஒரு பயனர் பதிவை மாற்றியமைக்கும்போது, ​​மற்றொருவர் தனது சொந்த கர்சரைப் பயன்படுத்தி அதைப் படிக்கிறார், மேலும், அவர் அதே பதிவை மாற்றியமைக்க முடியும், இது தரவு ஒருமைப்பாட்டை பராமரிக்க அவசியமாகிறது.

SQL சர்வர் நிலையான, மாறும், ஆதரிக்கிறது தொடர்ச்சியானமற்றும் விசைகளின் தொகுப்பால் கட்டுப்படுத்தப்படுகிறது.

உடன் திட்டத்தில் நிலையான கர்சர்தகவல் ஒருமுறை தரவுத்தளத்திலிருந்து படிக்கப்பட்டு, ஸ்னாப்ஷாட்டாக சேமிக்கப்படும் (சில நேரத்தின்படி), எனவே தரவுத்தளத்தில் மற்றொரு பயனரால் செய்யப்பட்ட மாற்றங்கள் தெரியவில்லை. சிறிது நேரம் கர்சரை திறக்கிறதுசேவையகம் அதன் முழு முடிவு தொகுப்பில் உள்ள அனைத்து வரிசைகளிலும் ஒரு பூட்டை அமைக்கிறது. நிலையான கர்சர்உருவாக்கிய பிறகு மாறாது மற்றும் திறக்கும் நேரத்தில் இருந்த தரவுத் தொகுப்பை எப்போதும் காண்பிக்கும்.

பிற பயனர்கள் கர்சரில் உள்ள தரவை மூல அட்டவணையில் மாற்றினால், இது பாதிக்காது நிலையான கர்சர்.

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

டைனமிக் கர்சர்தரவை "நேரடி" நிலையில் பராமரிக்கிறது, ஆனால் இதற்கு நெட்வொர்க் மற்றும் மென்பொருள் ஆதாரங்கள் தேவை. பயன்படுத்தி டைனமிக் கர்சர்கள்மூலத் தரவின் முழுமையான நகல் உருவாக்கப்படவில்லை, ஆனால் பயனர் குறிப்பிட்ட தரவை அணுகும்போது மட்டுமே மூல அட்டவணையில் இருந்து மாறும் தேர்வு செய்யப்படுகிறது. எடுக்கும்போது, ​​சேவையகம் வரிசைகளைப் பூட்டுகிறது, மேலும் கர்சரின் முழு முடிவுத் தொகுப்பில் பயனர் செய்யும் மாற்றங்கள் கர்சரில் தெரியும். இருப்பினும், கர்சர் தரவைப் பெற்ற பிறகு மற்றொரு பயனர் மாற்றங்களைச் செய்திருந்தால், அவை கர்சரில் பிரதிபலிக்காது.

விசைகளின் தொகுப்பால் கர்சர் கட்டுப்படுத்தப்படுகிறது, இந்த உச்சநிலைகளுக்கு நடுவில் உள்ளது. மாதிரியின் போது பதிவுகள் அடையாளம் காணப்படுகின்றன, இதனால் மாற்றங்கள் கண்காணிக்கப்படுகின்றன. ஸ்க்ரோலிங் மீண்டும் செயல்படுத்தும் போது இந்த வகை கர்சர் பயனுள்ளதாக இருக்கும் - பின்னர் தகவல் புதுப்பிக்கப்பட்டு இயக்கி தேர்ந்தெடுக்கும் வரை வரிசைகளைச் சேர்த்தல் மற்றும் நீக்குதல் ஆகியவை தெரியவில்லை புதிய பதிப்புபதிவுகள், அவற்றில் மாற்றங்கள் செய்யப்பட்டிருந்தால்.

தொடர் கர்சர்கள்தலைகீழ் திசையில் தரவைப் பெற அனுமதிக்கப்படவில்லை. பயனர் கர்சரின் தொடக்கத்திலிருந்து இறுதி வரையிலான வரிசைகளை மட்டுமே தேர்ந்தெடுக்க முடியும். தொடர் கர்சர்அனைத்து வரிசைகளின் தொகுப்பையும் சேமிக்காது. அவை கர்சரில் தேர்ந்தெடுக்கப்பட்டவுடன் தரவுத்தளத்திலிருந்து படிக்கப்படும், இது தரவுத்தளத்தில் பயனர்கள் செய்த அனைத்து மாற்றங்களையும் INSERT, UPDATE, DELETE கட்டளைகளைப் பயன்படுத்தி மாறும் வகையில் பிரதிபலிக்க அனுமதிக்கிறது. கர்சர் தரவின் சமீபத்திய நிலையைக் காட்டுகிறது.

நிலையான கர்சர்கள்தரவின் நிலையான பார்வையை வழங்கும். அவை தகவல் "கிடங்கு" அமைப்புகளுக்கு நல்லது: அறிக்கையிடல் அமைப்புகளுக்கான பயன்பாடுகள் அல்லது புள்ளிவிவர மற்றும் பகுப்பாய்வு நோக்கங்களுக்காக. தவிர, நிலையான கர்சர்பெரிய அளவிலான தரவுகளை மாதிரியாக்குவதன் மூலம் மற்றவர்களை விட சிறப்பாக சமாளிக்கிறது. இதற்கு நேர்மாறாக, மின்னணு கொள்முதல் அல்லது டிக்கெட் முன்பதிவு அமைப்புகளுக்கு மாற்றங்கள் செய்யப்படும்போது புதுப்பிக்கப்பட்ட தகவல்களின் மாறும் உணர்தல் தேவைப்படுகிறது. இதுபோன்ற சந்தர்ப்பங்களில் இது பயன்படுத்தப்படுகிறது டைனமிக் கர்சர். இந்தப் பயன்பாடுகளில், பரிமாற்றப்பட்ட தரவின் அளவு பொதுவாக சிறியது மற்றும் வரிசை (தனிப்பட்ட பதிவு) மட்டத்தில் அணுகப்படும். குழு அணுகல் மிகவும் அரிதானது.

MS SQL சர்வர் சூழலில் கர்சர் மேலாண்மை

கர்சர் கட்டுப்பாடுபின்வரும் கட்டளைகளை செயல்படுத்துவதன் மூலம் செயல்படுத்தப்படுகிறது:

  • அறிவிப்பு - உருவாக்கம் அல்லது கர்சர் அறிவிப்பு;
  • திறந்த - கர்சரை திறக்கிறது, அதாவது அதை தரவுகளால் நிரப்புதல்;
  • எடுக்கவும் கர்சரில் இருந்து தேர்வுமற்றும் கர்சரைப் பயன்படுத்தி தரவு வரிசைகளை மாற்றுதல்;
  • நெருக்கமான - கர்சரை மூடுகிறது;
  • டீலோகேட் - கர்சரை விடுவிக்கிறது, அதாவது கர்சரை ஒரு பொருளாக நீக்குகிறது.

கர்சர் பிரகடனம்

கர்சரை உருவாக்க SQL தரநிலை பின்வரும் கட்டளையை வழங்குகிறது:

உணர்வற்ற குறிச்சொல்லைப் பயன்படுத்துவது உருவாக்கப்படும் நிலையான கர்சர். தரவு மாற்றங்கள்அனுமதிக்கப்படவில்லை, கூடுதலாக, பிற பயனர்களால் செய்யப்பட்ட மாற்றங்கள் காட்டப்படாது. உணர்ச்சியற்ற திறவுச்சொல் விடுபட்டால், a டைனமிக் கர்சர்.

நீங்கள் SCROLL முக்கிய சொல்லைக் குறிப்பிடும்போது, ​​உருவாக்கப்பட்ட கர்சரை எந்த திசையிலும் உருட்டலாம், இது எந்த தேர்வு கட்டளைகளையும் பயன்படுத்த உங்களை அனுமதிக்கிறது. இந்த வாதம் தவிர்க்கப்பட்டால், கர்சர் இருக்கும் சீரான, அதாவது அதன் பார்வை ஒரு திசையில் மட்டுமே சாத்தியமாகும் - ஆரம்பம் முதல் இறுதி வரை.

SELECT அறிக்கையானது SELECT கோரிக்கையின் உடலைக் குறிப்பிடுகிறது, இது கர்சருக்கான வரிசைகளின் தொகுப்பைத் தீர்மானிக்கிறது.

READ_ONLY எனக் குறிப்பிடுவது படிக்க-மட்டும் கர்சரை உருவாக்குகிறது மற்றும் தரவுகளில் எந்த மாற்றங்களையும் அனுமதிக்காது. இது நிலையானவற்றிலிருந்து வேறுபடுகிறது, இருப்பினும் பிந்தையது தரவை மாற்ற அனுமதிக்காது. படிக்க மட்டுமேயான கர்சராக அறிவிக்க முடியும் டைனமிக் கர்சர், இது மற்றொரு பயனரால் செய்யப்பட்ட மாற்றங்களைக் காட்ட அனுமதிக்கும்.

புதுப்பிப்புக்கான வாதத்துடன் கர்சரை உருவாக்குவது, கர்சரில் இயக்க உங்களை அனுமதிக்கிறது தரவு மாற்றம்குறிப்பிட்ட நெடுவரிசைகளில் அல்லது, OF column_name வாதம் இல்லாத நிலையில், அனைத்து நெடுவரிசைகளிலும்.

MS SQL சர்வர் சூழலில், கர்சர் உருவாக்கும் கட்டளைக்கான பின்வரும் தொடரியல் ஏற்றுக்கொள்ளப்படுகிறது:

<создание_курсора>::= SELECT_ஸ்டேட்மெண்ட் ]]க்கு cursor_name CURSOR ஐ அறிவிக்கவும்

LOCAL திறவுச்சொல்லைப் பயன்படுத்தினால், தொகுப்பு, தூண்டுதல், சேமிக்கப்பட்ட செயல்முறை, அல்லது விருப்ப செயல்பாடு. ஒரு தொகுப்பு, தூண்டுதல், செயல்முறை அல்லது செயல்பாடு முடிவடையும் போது, ​​கர்சர் மறைமுகமாக அழிக்கப்படும். கர்சரின் உள்ளடக்கங்களை உருவாக்கிய கட்டமைப்பிற்கு வெளியே அனுப்ப, அதன் அளவுருவிற்கு OUTPUT வாதத்தை நீங்கள் ஒதுக்க வேண்டும்.

GLOBAL முக்கிய வார்த்தை குறிப்பிடப்பட்டால், உலகளாவிய கர்சர் உருவாக்கப்படும்; தற்போதைய இணைப்பு மூடப்படும் வரை அது இருக்கும்.

FORWARD_ONLY உருவாக்கங்களைக் குறிப்பிடுகிறது தொடர் கர்சர்; முதல் வரிசையிலிருந்து கடைசி வரையிலான திசையில் மட்டுமே தரவை மாதிரி எடுக்க முடியும்.

SCROLL ஐக் குறிப்பிடுவது உருவாக்குகிறது உருட்டக்கூடிய கர்சர்; எந்த வரிசையிலும் எந்த திசையிலும் தரவை அணுகலாம்.

STATIC உருவாக்கங்களைக் குறிப்பிடுவது நிலையான கர்சர்.

KEYSET ஐ குறிப்பிடுவது ஒரு முக்கிய கர்சரை உருவாக்குகிறது.

டைனமிக் உருவாக்கங்களைக் குறிப்பிடுவது டைனமிக் கர்சர்.

READ_ONLY கர்சருக்கான FAST_FORWARD வாதத்தை நீங்கள் குறிப்பிட்டால், உருவாக்கப்பட்ட கர்சர் இதற்கு உகந்ததாக இருக்கும் விரைவான அணுகல்தரவுகளுக்கு. இந்த வாதத்தை FORWARD_ONLY அல்லது OPTIMISTIC வாதங்களுடன் சேர்த்துப் பயன்படுத்த முடியாது.

OPTIMISTIC வாதத்துடன் உருவாக்கப்பட்ட கர்சர், பின்னர் மாற்றியமைக்கப்பட்ட வரிசைகளை மாற்றுவதையோ அல்லது நீக்குவதையோ தடுக்கிறது கர்சரை திறக்கிறது.

TYPE_WARNING வாதத்தை குறிப்பிடுவதன் மூலம், SELECT வினவலுடன் பொருந்தவில்லை என்றால், கர்சர் வகைக்கு மறைமுகமான மாற்றத்தை சேவையகம் பயனருக்கு தெரிவிக்கும்.

கர்சரை திறக்கிறது

க்கு கர்சரை திறக்கிறதுமற்றும் கர்சரை உருவாக்கும் போது குறிப்பிடப்பட்ட SELECT வினவலில் இருந்து தரவை நிரப்பவும், பின்வரும் கட்டளையைப் பயன்படுத்தவும்:

பிறகு கர்சரை திறக்கிறதுதொடர்புடைய SELECT அறிக்கை செயல்படுத்தப்படுகிறது, இதன் வெளியீடு பல நிலை நினைவகத்தில் சேமிக்கப்படுகிறது.

கர்சரிலிருந்து தரவை மீட்டெடுக்கிறது

அதற்குப்பிறகு கர்சரை திறக்கிறதுபின்வரும் கட்டளையைப் பயன்படுத்தி அதன் உள்ளடக்கங்களை (தொடர்பான வினவலை இயக்குவதன் விளைவாக) தேர்ந்தெடுக்கலாம்:

FIRST ஐக் குறிப்பிடுவது கர்சரின் முழுமையான முடிவுத் தொகுப்பின் முதல் வரிசையை வழங்கும், இது தற்போதைய வரிசையாக மாறும்.

LAST ஐக் குறிப்பிடுவது கர்சரின் மிகச் சமீபத்திய வரிசையை வழங்குகிறது. இது நடப்பு வரியாகவும் மாறும்.

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

PRIOR திறவுச்சொல் தற்போதைய வரிசைக்கு முந்தைய வரிசையை வழங்குகிறது. இது தற்போதையதாக மாறும்.

வாதம் ABSOLUTE (line_number | @line_number_variable)கர்சரின் முழுமையான முடிவு தொகுப்பில் ஒரு வரிசையை அதன் முழுமையான ஆர்டினல் எண்ணின் மூலம் வழங்குகிறது. வரி எண்ணை ஒரு மாறிலியைப் பயன்படுத்தி அல்லது வரி எண் சேமிக்கப்படும் மாறியின் பெயராகக் குறிப்பிடலாம். மாறி ஒரு முழு எண் தரவு வகையாக இருக்க வேண்டும். நேர்மறை மற்றும் எதிர்மறை மதிப்புகள் இரண்டும் குறிக்கப்படுகின்றன. நேர்மறை மதிப்பைக் குறிப்பிடும் போது, ​​சரம் தொகுப்பின் தொடக்கத்திலிருந்து கணக்கிடப்படும், அதே சமயம் எதிர்மறை மதிப்பு முடிவில் இருந்து கணக்கிடப்படும். தேர்ந்தெடுக்கப்பட்ட வரி தற்போதைய வரியாக மாறும். பூஜ்ய மதிப்பு குறிப்பிடப்பட்டால், எந்த வரிசையும் வழங்கப்படாது.

வாதம் உறவினர் (வரிசைகளின் எண்ணிக்கை | @மாறி வரிசைகளின் எண்ணிக்கை)தற்போதைய வரிக்குப் பிறகு குறிப்பிட்ட எண்ணிக்கையிலான வரிகளை வழங்குகிறது. வரிசைகளின் எதிர்மறை எண்ணைக் குறிப்பிட்டால், தற்போதைய வரிசைக்கு முன் குறிப்பிட்ட எண்ணிக்கையிலான வரிசைகள் திருப்பித் தரப்படும். பூஜ்ய மதிப்பைக் குறிப்பிடுவது தற்போதைய வரிசையை வழங்கும். திரும்பிய வரிசை தற்போதைய வரிசையாக மாறும்.

செய்ய உலகளாவிய கர்சரைத் திறக்கவும், நீங்கள் அதன் பெயருக்கு முன் GLOBAL முக்கிய சொல்லைக் குறிப்பிட வேண்டும். கர்சர் பெயரையும் மாறியைப் பயன்படுத்தி குறிப்பிடலாம்.

வடிவமைப்பில் INTO @variable_name [,...n]மாறிகளின் பட்டியல் குறிப்பிடப்பட்டுள்ளது, அதில் திரும்பிய வரிசையின் தொடர்புடைய நெடுவரிசை மதிப்புகள் சேமிக்கப்படும். மாறிகளைக் குறிப்பிடும் வரிசை கர்சரில் உள்ள நெடுவரிசைகளின் வரிசையுடன் பொருந்த வேண்டும், மேலும் மாறியின் தரவு வகை கர்சர் நெடுவரிசையில் உள்ள தரவு வகையுடன் பொருந்த வேண்டும். INTO கட்டுமானம் குறிப்பிடப்படவில்லை என்றால், FETCH கட்டளையின் நடத்தை SELECT கட்டளையின் நடத்தையை ஒத்திருக்கும் - தரவு திரையில் காட்டப்படும்.

தரவை மாற்றுதல் மற்றும் நீக்குதல்

கர்சரைப் பயன்படுத்தி மாற்றங்களைச் செய்ய, நீங்கள் பின்வரும் வடிவத்தில் UPDATE கட்டளையை வழங்க வேண்டும்:

தற்போதைய கர்சர் வரிசையின் பல நெடுவரிசைகளை ஒரு செயல்பாட்டில் மாற்றலாம், ஆனால் அவை அனைத்தும் ஒரே அட்டவணையில் இருக்க வேண்டும்.

கர்சரைப் பயன்படுத்தி தரவை நீக்க, பின்வரும் வடிவத்தில் DELETE கட்டளையைப் பயன்படுத்தவும்:

இதன் விளைவாக, கர்சரில் உள்ள வரி அமைக்கப்பட்ட மின்னோட்டம் நீக்கப்படும்.

கர்சரை மூடுகிறது

மூடிய பிறகு, நிரல் பயனர்களுக்கு கர்சர் அணுக முடியாததாகிவிடும். மூடப்படும் போது, ​​அதன் செயல்பாட்டின் போது நிறுவப்பட்ட அனைத்து பூட்டுகளும் அகற்றப்படும். திறந்த கர்சர்களுக்கு மட்டுமே மூடுதலைப் பயன்படுத்த முடியும். மூடப்பட்டது ஆனால் இல்லை விடுவிக்கப்பட்ட கர்சர்மீண்டும் திறக்கப்படலாம். திறக்கப்படாத கர்சரை மூட அனுமதி இல்லை.

கர்சரை விடுவிக்கவும்

கர்சரை மூடுகிறதுஅதனுடன் தொடர்புடைய நினைவகத்தை விடுவிக்க வேண்டிய அவசியமில்லை. சில செயலாக்கங்கள் DEALLOCATE அறிக்கையைப் பயன்படுத்தி அதை வெளிப்படையாக வெளியிட வேண்டும். பிறகு கர்சரை விடுவிக்கவும்நினைவகமும் விடுவிக்கப்பட்டது, கர்சர் பெயரை மீண்டும் பயன்படுத்துவதை சாத்தியமாக்குகிறது.

கர்சரின் முடிவை அடைந்துவிட்டதா என்பதைக் கட்டுப்படுத்த, செயல்பாட்டைப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது: @@FETCH_STATUS

@@FETCH_STATUS செயல்பாடு திரும்பும்:

பெறுதல் வெற்றிகரமாக இருந்தால் 0;

1 கர்சருக்கு வெளியே ஒரு கோட்டைப் பெறுவதற்கான முயற்சியால் பெறுதல் தோல்வியடைந்தால்;

2 நீக்கப்பட்ட அல்லது மாற்றியமைக்கப்பட்ட வரிசையை அணுகும் முயற்சியால் பெறுதல் தோல்வியுற்றால்.

அறிவிக்கவும் @id_kl INT, @firm VARCHAR(50), @fam VARCHAR(50), @message VARCHAR(80), @nam VARCHAR(50), @d DATETIME, @p INT, @s INT SET @s=0 PRINT "ஷாப்பிங் பட்டியல்" கிளையண்ட்_கர்சரை உள்ளூர் என அறிவிக்கவும். =0 BEGIN SELECT @message="Client "+@fam+ "Company"+ @firm PRINT @message SELECT @message="தயாரிப்பு பெயர் கொள்முதல் தேதி செலவு" அச்சிடு @செய்தி தயாரிப்பு.பெயர், பரிவர்த்தனை.தேதி, தயாரிப்பு தேர்வுக்கு tovar_cursor CURSOR அறிவிக்கவும் விலை * பரிவர்த்தனை தயாரிப்பு குறியீடு= பரிவர்த்தனை. தயாரிப்பு குறியீடு எங்கே பரிவர்த்தனை. வாடிக்கையாளர் குறியீடு=@id_kl திறக்க tovar_cursor அடுத்த tovar_cursor இருந்து @nam, @d, @p IF @@FETCH_STATUS<>0 அச்சிட "வாங்கல்கள் இல்லை" @@FETCH_STATUS=0 தொடக்கம் @message=" "+@nam+" "+ CAST(@d AS CHAR(12))+" "+ CAST(@p AS CHAR(6)) அச்சிடவும் @message SET @s=@s+@p tovar_cursor இலிருந்து அடுத்ததைப் பெறவும் -- அடுத்த கிளையண்டிற்குச் செல் எடுத்துக்காட்டு 13.6. மாஸ்கோவிலிருந்து வாடிக்கையாளர்களால் வாங்கப்பட்ட பொருட்களின் பட்டியலையும் அவற்றின் மொத்த விலையையும் காண்பிப்பதற்கான கர்சர்.

எடுத்துக்காட்டு 13.7.மாஸ்கோவிலிருந்து வாடிக்கையாளர்களுக்கு உருட்டக்கூடிய கர்சரை உருவாக்கவும். ஃபோன் எண் 1-ல் தொடங்கினால், அந்த எண்ணைக் கொண்ட கிளையண்டை நீக்கி, முதல் கர்சர் உள்ளீட்டில், ஃபோன் எண்ணில் உள்ள முதல் இலக்கத்தை 4-ல் மாற்றவும்.

@நிறுவனம் VARCHAR(50), @fam VARCHAR(50), @tel VARCHAR(8), @message VARCHAR(80) அச்சிடு "வாடிக்கையாளர்களின் பட்டியல்" அச்சிடு நிறுவனத்தின் மூலம் நகரம் =மாஸ்கோ ஆர்டர் எங்கே, புதுப்பிப்புக்கான கடைசிப் பெயர் OPEN klient_cursor க்கு அடுத்தது klient_cursor இலிருந்து @firm, @fam, @tel @@FETCH_STATUS=0 தொடக்கம் @message="கிளையண்ட் நிறுவனம் "+@fam+ " @firm " Phone "+ @tel PRINT @message -- ஃபோன் எண் 1 எனத் தொடங்கினால், -- க்ளையண்ட்_கர்சரில் தற்போது உள்ள கிளையண்டை @tel '1%' நீக்கினால், அந்த எண்ணுடன் கிளையண்டை நீக்கவும் -- அடுத்ததற்குச் செல்லவும் கிளையன்ட் க்ளையன்ட்_கர்சரிலிருந்து @firm, @fam, @tel END 1 ஐப் பெறுங்கள். ='4' + உரிமை(@ டெல்,லென்(@டெல்)-1)) கிளையண்ட்_கர்சரின் தற்போதைய இடம் @message="கிளையண்ட் "+@ஃபாம்+" நிறுவனம் "+ @நிறுவனம் "ஃபோன்"+ DEALLOCATE client_cursor எடுத்துக்காட்டு 13.7. மாஸ்கோவிலிருந்து வாடிக்கையாளர்களுக்கு உருட்டக்கூடிய கர்சர்.

எடுத்துக்காட்டு 13.8.பயன்பாடு செயல்முறையின் வெளியீட்டு அளவுருவாக கர்சர். செயல்முறை தரவு தொகுப்பை வழங்குகிறது - தயாரிப்புகளின் பட்டியல்.

வெளியீட்டு கர்சரில் இருந்து செயல்முறை மற்றும் அச்சிடும் தரவை அழைப்பது பின்வருமாறு மேற்கொள்ளப்படுகிறது:

@my_cur CURSOR அறிவிப்பை அறிவிக்கவும் @n VARCHAR(20) EXEC my_proc @cur=@my_cur அவுட்புட் அடுத்தது @my_cur இலிருந்து பெறவும் @n தேர்ந்தெடுக்கவும் END CLOSE @my_cur DEALLOCATE @my_cur


கர்சர் என்பது சூழல் நினைவக பகுதிக்கான இணைப்பு. SQL நிரலாக்க மொழியின் சில செயலாக்கங்களில் (ஆரக்கிள், மைக்ரோசாப்ட் SQLசேவையகம்) - வினவலை இயக்கும் போது பெறப்பட்ட முடிவு மற்றும் தொடர்புடைய தற்போதைய பதிவு சுட்டிக்காட்டி. கர்சர் என்று நான் கூறுவேன் மெய்நிகர் அட்டவணைஇது ஒரு மாற்று தரவு சேமிப்பு ஆகும். இந்த வழக்கில், கர்சர் அதன் தரவை வழக்கமான வரிசையின் தரவைப் போல அணுக அனுமதிக்கிறது.
சேமிக்கப்பட்ட நடைமுறைகளில் கர்சர்கள் பயன்படுத்தப்படுகின்றன. போதுமான கோட்பாடு, ஒரு உதாரணத்தைப் பார்ப்போம்:
எங்களிடம் ஒரு தரவுத்தளம் உள்ளது (தரவுத்தளம் கொஞ்சம் நன்றாக இல்லை, இது என்னுடையது ஆய்வக வேலை, ஆனால் எங்கள் தரவுத்தள ஆசிரியர் அத்தகைய கட்டமைப்பை வலியுறுத்தினார்)
/*வங்கி தகவல்*/
'வங்கி' அட்டவணையை உருவாக்கு (

`BankName` VARCHAR (50) COLLATE utf8_bin பூஜ்ய இயல்புநிலை அல்ல "" ,


முதன்மை விசை (`BankId`)

)இன்ஜின்=இன்னோடிபி
எழுத்துத் தொகுப்பு "utf8" COLLATE "utf8_bin" ;
/* வைப்புகளைப் பற்றிய தரவு */
'வங்கி விநியோகம்' அட்டவணையை உருவாக்கவும் (
`BankId` INTEGER (11) NULL அல்ல ,
`பர்சென்ட்` முழு எண் (11) இயல்புநிலை பூஜ்யம் ,
`பங்களிப்புத் தொகை` தசம (10,0) பூஜ்யமில்லை ,
`கிளையண்ட்ஐடி` முழு எண் (11) பூஜ்யமாக இல்லை ,
முதன்மை விசை(`BankId`, `ClientId`),
முக்கிய `BankId` (`BankId`),
முக்கிய `ClientId` (`ClientId`),
கட்டுப்படுத்தப்பட்ட `வங்கி விநியோகம்_fk` வெளிநாட்டு திறவுகோல் (`BankId`) குறிப்புகள் `வங்கி` (`BankId`),
கட்டுப்படுத்தும் `bankdistribution_fk1` வெளிநாட்டு விசை (`ClientId`) குறிப்புகள் `கிளையன்ட்` (`ClientId`)
)இன்ஜின்=இன்னோடிபி
/*முதலீட்டாளர்கள் பற்றிய தரவு*/
டேபிளை உருவாக்கு `கிளையன்ட்` (
`ClientId` INTEGER (3) NULL AUTO_INCREMENT,
`கிரெடிட் கார்டு ஐடி` பெரியது(10) பூஜ்யமில்லை ,
`குடும்பப்பெயர்` VARCHAR (50) COLLATE utf8_bin பூஜ்ய இயல்புநிலை அல்ல "" ,
`பெயர்` VARCHAR (50) COLLATE utf8_bin பூஜ்ய இயல்புநிலை அல்ல "" ,
`FirstName` VARCHAR (50) COLLATE utf8_bin பூஜ்ய இயல்புநிலை அல்ல "" ,
`ஃபோன்` VARCHAR (50) COLLATE utf8_bin NULL DEFAULT "" ,
`முகவரி` VARCHAR (50) COLLATE utf8_bin பூஜ்ய இயல்புநிலை அல்ல "" ,
`SafeId` INTEGER (5) NULL அல்ல ,
முதன்மை விசை(`ClientId`, `CreditCardId`),
முக்கிய `ClientId` (`ClientId`)

)இன்ஜின்=இன்னோடிபி
AUTO_INCREMENT=11 எழுத்து அமைப்பு "utf8" COLLATE "utf8_bin"

நாம் ஒவ்வொரு வங்கியையும் வரிசையாகப் பெற்று, அதனுடன் சில செயல்களைச் செய்ய வேண்டும் என்று வைத்துக்கொள்வோம், பின்வரும் வினவல் இதற்கு உதவும்

`வங்கி` என்பதைத் தேர்ந்தெடுங்கள்
. எனவே, LIMIT நமக்குத் தேவை_பதிவு எண், 1ஐப் பயன்படுத்தி, ஒவ்வொரு பதிவையும் வங்கி அட்டவணையில் இருந்து சுழற்சி முறையில் பிரித்தெடுத்து, அதைக் கொண்டு நமக்குத் தேவையான செயல்களைச் செய்கிறோம், அதே நேரத்தில் WE NEED_RECORD NUMBER இன் மதிப்பை 1 ஆல் அதிகரிக்கிறோம். இப்போது அதையே செய்வோம். கர்சரைப் பயன்படுத்தி
தொடங்கு
/* நாம் தரவை மீட்டெடுக்கும் மாறிகள் */
vBankId முழு எண்ணை அறிவிக்கவும்;
vBankName VARCHAR (50) ஐ அறிவிக்கவும்;
vAddress VARCHAR(50)ஐ அறிவிக்கவும்;
vPhone VARCHAR (50) அறிவிக்கவும்;
/* ஹாட்லர் மாறி - a*/
முடிக்கப்பட்ட முழு எண் இயல்புநிலை 0 என்று அறிவிக்கவும்;
/*கர்சர் அறிவிப்பு*/
`வங்கி`.`BankId`,`bank`.`BankName`,`bank`.`Address`,`bank`.`Phone` என்பதைத் தேர்ந்தெடுக்க BankCursor Cursorஐ அறிவிக்கவும், இங்கு `வங்கி` 1;
/*ஹேண்ட்லர் நோக்கம், இது கீழே விளக்கப்படும்*/
SQLSTATE "02000" SET க்கு தொடர்ச்சியான ஹேண்ட்லரை அறிவிக்கவும்=1;
/* திறந்த கர்சர் */
பேங்க் கர்சரைத் திறக்கவும்;
/*தரவை மீட்டெடுக்க*/
செய்யும் போது = 0 DO

நாங்கள் தேவையான நடவடிக்கைகளை எடுக்கிறோம்
இறுதியில் ;
/*கர்சரை மூடுதல்*/
பேங்க் கர்சரை மூடு;
END ;

* இந்த மூலக் குறியீடு மூலக் குறியீடு ஹைலைட்டருடன் முன்னிலைப்படுத்தப்பட்டது.

பிழை: 1329 SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA)

செய்தி: தரவு இல்லை - பூஜ்ஜிய வரிசைகள் எடுக்கப்பட்டது, தேர்ந்தெடுக்கப்பட்டது அல்லது செயலாக்கப்பட்டது

SQLSTATE: 02000 கர்சரின் முடிவை அடையும் போது, ​​அல்லது தேர்ந்தெடுக்கும் போது அல்லது புதுப்பிக்கும் போது வெற்று சரத்தை வழங்கும்.

அடுத்த வரியில் கர்சரை அறிவித்தோம் CURSOR கர்சர்_பெயர் CURSOR for select_statement;
கர்சரைத் திற cursor_name;
பின்னர், நாம் கர்சரின் முடிவை அடையும் வரை (முடிந்தது = 0 DO), நாங்கள் தரவைப் பிரித்தெடுத்து அதைச் செயலாக்குகிறோம்.
சேமிக்கப்பட்ட செயல்முறையிலிருந்து வெளியேறும் முன் கர்சரை மூட வேண்டும். கர்சர்_பெயரை மூடு;

இது சிக்கலானதாகத் தெரியவில்லை. ஆனால் SQLSTATE "02000" உடன் தொடர்புடைய பல ஆபத்துகள் உள்ளன.

செய்யும் போது = 0 DO
வங்கி கர்சரை vBankId,vBankName,vAddress,vPhone க்குள் கொண்டு வாருங்கள்;

வங்கி விநியோகத்திலிருந்து vContributeAmountSUM க்குள் (ContributeAmount) தேர்ந்தெடுக்கவும், இதில் BankId = vBankId வரம்பு 1;
சில செயல்களை செய்கிறோம்
இறுதியில் ;

* இந்த மூலக் குறியீடு மூலக் குறியீடு ஹைலைட்டருடன் முன்னிலைப்படுத்தப்பட்டது.


தொடரியல் பார்வையில் எல்லாம் சரியாகவும் சரியாகவும் உள்ளது. ஆனால் ஒரு தர்க்கரீதியான பார்வையில், இல்லை. டெபாசிட்டர்கள் சில வங்கிகளில் கணக்குகளைத் திறக்காமல் இருக்கலாம், பின்னர் வங்கி விநியோகத்திலிருந்து vContributeAmountSUM ஐத் தேர்ந்தெடுக்க (ContributeAmount) க்கு BankId = vBankId வரம்பு 1; SQLSTATE: 02000 சுடும், முடிந்த மாறி 1 ஆக அமைக்கப்படும், மற்றும் லூப் போதுநாங்கள் எதிர்பார்த்ததை விட முன்னதாகவே முடிவடையும். பின்வரும் செயல்களைச் செய்வதன் மூலம் இதைத் தவிர்க்கலாம்
செய்யும் போது = 0 DO
வங்கி கர்சரை vBankId,vBankName,vAddress,vPhone க்குள் கொண்டு வாருங்கள்;
/* வங்கியின் எந்தவொரு வைப்புத் தொகையையும் பிரித்தெடுக்கவும் */


(vContributeAmountSUM > 0) என்றால்
/* வங்கியின் எந்தவொரு வைப்புத் தொகையையும் பிரித்தெடுக்கவும் */

முடிவு என்றால் ;
சில செயல்களை செய்கிறோம்
இறுதியில் ;

* இந்த மூலக் குறியீடு மூலக் குறியீடு ஹைலைட்டருடன் முன்னிலைப்படுத்தப்பட்டது.


முதல் கோரிக்கையுடன், பங்களிப்புகள் உள்ளதா என்பதைச் சரிபார்த்தோம் (எதுவும் இல்லை என்றால், vContributeAmountSUM == 0) மற்றும் ஏதேனும் இருந்தால் மட்டுமே, தரவை மீட்டெடுக்கிறோம்.

இப்போது ஒவ்வொரு வாடிக்கையாளருக்கும் வெவ்வேறு வங்கிகளில் உள்ள கணக்குகளில் உள்ள மொத்தத் தொகையை நீக்க வேண்டும் என்று வைத்துக்கொள்வோம்
ClientSummCursor கர்சரை அறிவிக்கவும் தொகையைத் தேர்ந்தெடுக்கவும்

தேர்ந்தெடுக்கப்பட்ட தொகை (`வங்கி விநியோகம்`.` பங்களிப்புத் தொகை`), `வங்கி விநியோகம்`.` ClientId` க்கு ClientSummCursor கர்சரை அறிவிக்கவும். `வங்கி விநியோகம்` Inner Join client on (client.ClientId = bankdistribution.`bank by clientId. bankdidtribution.`bank `ClientId`;

ClientSummCursor ஐ திறக்கவும்;
செய்யும் போது = 0 DO
வங்கி கர்சரை vBankId,vBankName,vAddress,vPhone க்குள் கொண்டு வாருங்கள்;
/* வங்கியின் எந்தவொரு வைப்புத் தொகையையும் பிரித்தெடுக்கவும் */
வங்கி விநியோகத்திலிருந்து vContributeAmountSUM க்குள் Count(ContributeAmount) என்பதைத் தேர்ந்தெடுக்கவும், இதில் BankId = vBankId வரம்பு 1;
/* இந்த வங்கியில் உண்மையில் டெபாசிட்கள் உள்ளதா என்று பாருங்கள் */
(vContributeAmountSUM > 0) என்றால்
/* வங்கியின் எந்தவொரு வைப்புத் தொகையையும் பிரித்தெடுக்கவும் */
BankId = vBankId வரம்பு 1 என்ற வங்கி விநியோகத்திலிருந்து பங்களிப்பு தொகையை vContributeAmountSUM ஐத் தேர்ந்தெடுக்கவும்;
முடிவு என்றால் ;


சில செயல்களை செய்கிறோம்.
இறுதியில் ;

* இந்த மூலக் குறியீடு மூலக் குறியீடு ஹைலைட்டருடன் முன்னிலைப்படுத்தப்பட்டது.

ClientSummCursor கர்சரில் உள்ள தரவு, BankCursor இல் உள்ள தரவை விட முன்னதாக முடிவடையும் போது, ​​SQLSTATE: 02000 தூண்டப்படும் போது, ​​செய்யப்பட்ட மாறி 1 ஆக அமைக்கப்பட்டு, மற்றும் லூப் நாம் எதிர்பார்த்ததை விட முன்னதாக முடிவடையும் போது இதே நிலை ஏற்படலாம். பின்வரும் செயல்களைச் செய்வதன் மூலம் இதைத் தவிர்க்கலாம்

ClientSummCursor ஐ திறக்கவும்;
செய்யும் போது = 0 DO
வங்கி கர்சரை vBankId,vBankName,vAddress,vPhone க்குள் கொண்டு வாருங்கள்;
/* வங்கியின் எந்தவொரு வைப்புத் தொகையையும் பிரித்தெடுக்கவும் */
வங்கி விநியோகத்திலிருந்து vContributeAmountSUM க்குள் Count(ContributeAmount) என்பதைத் தேர்ந்தெடுக்கவும், இதில் BankId = vBankId வரம்பு 1;
/* இந்த வங்கியில் உண்மையில் டெபாசிட்கள் உள்ளதா என்று பாருங்கள் */
(vContributeAmountSUM > 0) என்றால்
/* வங்கியின் எந்தவொரு வைப்புத் தொகையையும் பிரித்தெடுக்கவும் */
BankId = vBankId வரம்பு 1 என்ற வங்கி விநியோகத்திலிருந்து பங்களிப்பு தொகையை vContributeAmountSUM ஐத் தேர்ந்தெடுக்கவும்;
முடிவு என்றால் ;
/* இரண்டாவது கர்சரில் இருந்து தரவைப் பிரித்தெடுக்கும் முன், sqlstate நிலையை நினைவில் கொள்ளுங்கள் */
SET old_status = முடிந்தது;
/* நமக்குத் தேவையான தரவைப் பிரித்தெடுக்கவும் */
ClientSummCursor ஐ vSum,vClientId க்கு எடுக்கவும்;
/* தரவு மீட்டெடுக்கப்பட்டதா மற்றும் sqlstate 0200 தோல்வியடைந்ததா என்பதைச் சரிபார்க்கவும் */
(முடிந்தது = 0) என்றால்
சில செயல்களை செய்கிறோம்.
முடிவு என்றால் ;
/* நேரம் முடிவதற்கு முன், செய்யப்பட்ட மாறியின் மதிப்பை மீட்டெடுக்கவும் */
முடிந்தது = old_status;
இறுதியில் ;

* இந்த மூலக் குறியீடு மூலக் குறியீடு ஹைலைட்டருடன் முன்னிலைப்படுத்தப்பட்டது.

இதுவரை படித்த அனைவருக்கும் நன்றி, இது ஒருவருக்கு பயனுள்ளதாக இருக்கும் என்று நம்புகிறேன்.

இது இதற்குப் பொருந்தும்: SQL சர்வர் (2008 முதல்) அடிப்படை SQL தரவு Azure SQL தரவுக் கிடங்கு இணையான தரவுக் கிடங்கு

காட்சி பண்புகள் மற்றும் கர்சர் செயல்படும் முடிவு தொகுப்பை உருவாக்க பயன்படுத்தப்படும் வினவல் போன்ற பரிவர்த்தனை-SQL சர்வர் கர்சரின் பண்புகளை வரையறுக்கிறது. DECLARE CURSOR அறிக்கையானது ISO நிலையான தொடரியல் மற்றும் பரிவர்த்தனை-SQL மொழி நீட்டிப்பு தொகுப்பைப் பயன்படுத்தும் தொடரியல் இரண்டையும் ஆதரிக்கிறது.

ஐஎஸ்ஓ தொடரியல் கர்சர்_பெயரை அறிவிக்கவும் [ INSENSITIVE ] [ ஸ்க்ரோல் ] தேர்ந்தெடுக்கப்பட்ட_அறிக்கைக்கான கர்சர் [ (படிக்க மட்டும் | புதுப்பிப்பு [ OF column_name [ ,...n]] ) ] [;] பரிவர்த்தனை-SQL விரிவாக்கப்பட்ட தொடரியல் CURSOR_name CURSOR என அறிவிக்கவும் [ உள்ளூர் | உலகளாவிய ] [ முன்னோக்கி_மட்டும் | ஸ்க்ரோல் ] [ நிலையான | கீசெட் | டைனமிக் | FAST_FORWARD ] [ படிக்க_மட்டுமே | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] தேர்ந்தெடுக்கப்பட்ட_அறிக்கைக்கு [ புதுப்பிப்புக்கு [ OF column_name [ ,...n ] ] ] [;]

கர்சர்_பெயர்
கர்சர்_பெயர்

உணர்ச்சியற்ற
tempdb; எனவே, இந்த கர்சரின் தேர்வுகள் மூலம் வழங்கப்பட்ட தரவுகளில் அடிப்படை அட்டவணைகளில் மாற்றங்கள் பிரதிபலிக்காது, மேலும் இந்த கர்சரை மாற்ற முடியாது. ISO தொடரியல் பயன்படுத்தும் போது, ​​INSENSITIVE விருப்பம் குறிப்பிடப்படாவிட்டால், அடிப்படை அட்டவணையில் செய்யப்பட்ட உறுதியான மேம்படுத்தல்கள் மற்றும் நீக்குதல்கள் அடுத்தடுத்த தேர்வுகளில் தோன்றும்.

உருட்டவும்
அனைத்து மாதிரி விருப்பங்களும் உள்ளன என்பதைக் குறிக்கிறது (முதல், கடைசி, முன், அடுத்தது, உறவினர், முழுமையானது). ISO DECLARE CURSOR அறிக்கை ஸ்க்ரோல் விருப்பத்தை குறிப்பிடவில்லை என்றால், அடுத்த பெறுதல் விருப்பம் மட்டுமே ஆதரிக்கப்படும். FAST_FORWARD விருப்பத்துடன் SCROLL விருப்பத்தை குறிப்பிட முடியாது.

தேர்வு_அறிக்கை
தரநிலை தேர்வு அறிக்கை, இது கர்சரின் முடிவு தொகுப்பை வரையறுக்கிறது. முக்கிய வார்த்தைகள்உலாவுவதற்கும் INTOவிற்கும் அனுமதி இல்லை தேர்வு_அறிக்கைகர்சர் அறிவிப்பு.

தேர்வு_அறிக்கைகோரப்பட்ட வகையின் கர்சருடன் முரண்படுகிறது.

படிக்க மட்டும்

புதுப்பி]
நெடுவரிசை_பெயர் [, .. .என்] குறிப்பிடப்பட்டுள்ளது, பட்டியலிடப்பட்ட நெடுவரிசைகள் மட்டுமே மாற்றங்களை அனுமதிக்கும். நெடுவரிசைகளின் பட்டியல் இல்லாமல் புதுப்பிப்பு அறிக்கை பயன்படுத்தப்பட்டால், எல்லா நெடுவரிசைகளுக்கும் புதுப்பிப்பு சாத்தியமாகும்.

கர்சர்_பெயர்
குறிப்பிட்ட சர்வர் கர்சரின் பரிவர்த்தனை-SQL பெயர். கர்சர்_பெயர்அடையாளங்காட்டிகளுக்கான விதிகளைப் பின்பற்ற வேண்டும்.

உள்ளூர்
கர்சர் தொகுப்பு, சேமிக்கப்பட்ட செயல்முறை அல்லது அது உருவாக்கப்பட்ட தூண்டுதலுக்கு உள்ளூர் என்பதை குறிக்கிறது. கர்சர் பெயர் இந்தப் பகுதியில் மட்டுமே செல்லுபடியாகும். ஒரு கர்சரை தொகுப்பு உள்ளூர் மாறிகள், சேமிக்கப்பட்ட செயல்முறைகள், தூண்டுதல்கள் அல்லது சேமிக்கப்பட்ட செயல்முறையின் வெளியீட்டு அளவுரு மூலம் குறிப்பிடலாம். OUTPUT அளவுரு ஒரு உள்ளூர் கர்சரை அழைப்பு தொகுப்பு, சேமிக்கப்பட்ட செயல்முறை அல்லது தூண்டுதலுக்கு அனுப்ப பயன்படுகிறது, இது சேமிக்கப்பட்ட செயல்முறை முடிந்ததும் கர்சரை அணுகுவதற்கு கர்சர் மாறிக்கு அளவுருவை ஒதுக்கலாம். அவுட்புட் அளவுருவிற்கு கர்சர் அனுப்பப்படாவிட்டால், தொகுதி, சேமிக்கப்பட்ட செயல்முறை அல்லது தூண்டுதல் செயல்படுத்தலை முடிக்கும்போது கர்சர் மறைமுகமாக வெளியிடப்படும். கர்சர் OUTPUT அளவுருவிற்கு அனுப்பப்பட்டால், அதைக் குறிப்பிடும் அனைத்து மாறிகளும் விடுவிக்கப்படும்போது அல்லது நோக்கம் வெளியேறும் போது கர்சர் வெளியிடப்படும்.

உலகளாவிய
இணைப்புக்கு கர்சர் உலகளாவியது என்பதைக் குறிக்கிறது. இணைப்பில் இயங்கும் எந்தச் சேமிக்கப்பட்ட செயல்முறை அல்லது தொகுப்பிலும் கர்சர் பெயரைப் பயன்படுத்தலாம். இணைப்பு துண்டிக்கப்பட்டால் மட்டுமே கர்சர் மறைமுகமாக வெளியிடப்படும்.

FORWARD_ மட்டும்
கர்சரை முதல் வரியிலிருந்து கடைசி வரை மட்டுமே பார்க்க முடியும் என்று குறிப்பிடுகிறது. FETCH NEXT பெறுதல் விருப்பம் மட்டுமே ஆதரிக்கப்படுகிறது. STATIC, KEYSET அல்லது DYNAMIC முக்கிய வார்த்தைகள் இல்லாமல் FORWARD_ONLY குறிப்பிடப்பட்டிருந்தால், கர்சர் ஒரு டைனமிக் கர்சராக செயல்படுகிறது. FORWARD_ONLY வாதமோ அல்லது SCROLL வாதமோ குறிப்பிடப்படவில்லை எனில், STATIC, KEYSET அல்லது DYNAMIC முக்கிய வார்த்தைகள் இல்லாவிட்டால், இயல்புநிலை FORWARD_ONLY வாதமாக இருக்கும். STATIC, KEYSET மற்றும் DYNAMIC கர்சர்கள் ஸ்க்ரோலின் இயல்புநிலை மதிப்பைக் கொண்டுள்ளன. ODBC மற்றும் ADO போன்ற தரவுத்தள APIகளைப் போலன்றி, FORWARD_ONLY பயன்முறையானது பின்வரும் பரிவர்த்தனை-SQL கர்சர்களால் ஆதரிக்கப்படுகிறது: STATIC, KEYSET மற்றும் DYNAMIC.

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

கீசெட்
கர்சரைத் திறக்கும்போது, ​​அதில் உள்ள வரிசைகளின் உறுப்பினர் அல்லது வரிசை மாறாமல் இருப்பதைக் குறிக்கிறது. வரிசைகளை தனித்துவமாக அடையாளம் காணும் விசைகளின் தொகுப்பு அட்டவணையில் கட்டமைக்கப்பட்டுள்ளது tempdbஅழைக்கப்பட்டது விசைகள்.

கர்சர் உரிமையாளரால் செய்யப்பட்ட அல்லது பிற பயனர்களால் செய்யப்பட்ட அடிப்படை அட்டவணையில் முக்கிய அல்லாத மதிப்புகளில் மாற்றங்கள் கர்சர் உரிமையாளர் அதைப் பார்க்கும்போது காண்பிக்கப்படும். பிற பயனர்களால் செய்யப்பட்ட மாற்றங்கள் பிரதிபலிக்காது (பரிமாற்றம்-SQL சர்வர் கர்சரைப் பயன்படுத்தி மாற்றங்களைச் செய்ய முடியாது). ஒரு வரிசை நீக்கப்பட்டால், வரிசைகளைப் பெற முயற்சித்தால் @@FETCH_STATUS -2 கிடைக்கும். கர்சர் எல்லைகள் காரணமாக முக்கிய மதிப்புகளுக்கான புதுப்பிப்புகள் பழைய வரிசையை நீக்கி அதைச் செருகுவதைப் போன்றது. புதிய கோடு. புதிய மதிப்புகளைக் கொண்ட வரிசை தெரியவில்லை மற்றும் பழைய மதிப்புகளுடன் வரிசையைப் பெற முயற்சிக்கிறது @@FETCH_STATUS -2. WHERE CURRENT OF க்ளாஸைப் பயன்படுத்தி கர்சர் மூலம் மேம்படுத்தல்கள் செய்யப்பட்டால் அவை உடனடியாகத் தெரியும்.

மாறும்
இந்த கர்சரைப் பார்க்கும்போது முடிவுத் தொகுப்பில் உள்ள வரிசைகளில் செய்யப்பட்ட அனைத்து தரவு மாற்றங்களையும் காண்பிக்கும் கர்சரை வரையறுக்கிறது. ஒவ்வொரு தேர்விலும் தரவு மதிப்புகள், வரிசை மற்றும் வரிசை உறுப்பினர் மாறுபடலாம். ABSOLUTE தேர்வு விருப்பம் டைனமிக் கர்சர்களால் ஆதரிக்கப்படவில்லை.

FAST_FORWARD
செயல்திறன் மேம்படுத்தல் இயக்கப்பட்ட FORWARD_ONLY, READ_ONLY கர்சரைக் குறிக்கிறது. FAST_FORWARD விருப்பத்தை SCROLL அல்லது FOR_UPDATE விருப்பங்களுடன் குறிப்பிட முடியாது.

படிக்க_மட்டுமே
இந்த கர்சர் மூலம் செய்யப்படும் மாற்றங்களை தடுக்கிறது. UPDATE அல்லது DELETE அறிக்கையில் கர்சரைக் குறிப்பிட முடியாது. இயல்புநிலை கர்சர் புதுப்பிப்பு அம்சத்தை விட இந்த விருப்பம் முன்னுரிமை பெறுகிறது.

SCROLL_LOCKS
கர்சரைப் பயன்படுத்தி செய்யப்பட்ட நிலைப்படுத்தப்பட்ட புதுப்பிப்புகள் அல்லது நீக்குதல்கள் வெற்றியடைவது உறுதி என்பதைக் குறிக்கிறது. SQL சர்வர் வரிசைகளை கர்சரில் படிக்கும்போது பூட்டுகிறது, அந்த வரிசைகள் அடுத்தடுத்த மாற்றங்களுக்கு கிடைக்கின்றன என்பதை உறுதிப்படுத்துகிறது. SCROLL_LOCKS விருப்பத்தை FAST_FORWARD அல்லது STATIC விருப்பத்துடன் குறிப்பிட முடியாது.

நம்பிக்கையான
கர்சரில் படிக்கப்பட்டதிலிருந்து வரிசை புதுப்பிக்கப்பட்டிருந்தால், கர்சரைப் பயன்படுத்தி செய்யப்பட்ட நிலைப்படுத்தப்பட்ட புதுப்பிப்புகள் அல்லது நீக்கல்கள் தோல்வியடையும் என்பதைக் குறிப்பிடுகிறது. வரிசைகள் கர்சரில் படிக்கப்படுவதால் SQL சர்வர் பூட்டுவதில்லை. அதற்கு பதிலாக ஒப்பீடுகள் பயன்படுத்தப்படுகின்றன நேர முத்திரைஅட்டவணையில் இல்லை என்றால் நெடுவரிசை மதிப்புகள் அல்லது செக்சம்கள் நேர முத்திரைகர்சரில் படிக்கப்பட்டதிலிருந்து வரிசை மாறியுள்ளதா என்பதைத் தீர்மானிக்க நெடுவரிசை. வரிசை மாற்றப்பட்டிருந்தால், நிலைப்படுத்தப்பட்ட புதுப்பித்தல் அல்லது நீக்குவதற்கான முயற்சிகள் தோல்வியடையும். FAST_FORWARD விருப்பத்துடன் OPTIMISTIC விருப்பத்தை குறிப்பிட முடியாது.

TYPE_WARNING
கர்சர் ஒரு கோரப்பட்ட வகையிலிருந்து மற்றொரு வகைக்கு மறைமுகமாக மாற்றப்பட்டால் கிளையண்டிற்கு எச்சரிக்கை அனுப்பப்படும் என்று குறிப்பிடுகிறது.

தேர்வு_அறிக்கை
கர்சரின் முடிவுத் தொகுப்பைக் குறிப்பிடும் நிலையான SELECT அறிக்கை. COMPUTE, COMPUTE BY, FOR BROWSE மற்றும் INTO ஆகிய முக்கிய வார்த்தைகள் இதில் அனுமதிக்கப்படவில்லை தேர்வு_அறிக்கைகர்சர் அறிவிப்பு.

உட்பிரிவுகள் இருந்தால் SQL சர்வர் மறைமுகமாக கர்சரை வேறு வகைக்கு மாற்றுகிறது தேர்வு_அறிக்கைகோரப்பட்ட வகையின் கர்சருடன் முரண்படுகிறது. மேலும் தகவலுக்கு, மறைமுக கர்சர் மாற்றங்களைப் பார்க்கவும்.

புதுப்பிப்புக்காக]
கர்சரில் புதுப்பிக்கப்பட்ட நெடுவரிசைகளை வரையறுக்கிறது. OF என்றால் நெடுவரிசை_பெயர் [, ... n] வழங்கப்படுகிறது, பட்டியலிடப்பட்ட நெடுவரிசைகள் மட்டுமே மாற்றங்களை அனுமதிக்கின்றன. UPDATE அறிக்கையானது நெடுவரிசைப் பட்டியல் இல்லாமல் பயன்படுத்தப்பட்டால், READ_ONLY கான்கரென்சி விருப்பம் குறிப்பிடப்படாவிட்டால், எல்லா நெடுவரிசைகளுக்கும் புதுப்பிப்பு சாத்தியமாகும்.

DECLARE CURSOR அறிக்கையானது பரிவர்த்தனை-SQL சர்வர் கர்சரின் பண்புகளை வரையறுக்கிறது, அதாவது காட்சி பண்புகள் மற்றும் கர்சர் செயல்படும் முடிவை உருவாக்க பயன்படுத்தப்படும் வினவல். OPEN அறிக்கையானது முடிவு தொகுப்பை நிரப்புகிறது, மேலும் FETCH அறிக்கை அதிலிருந்து ஒரு வரிசையை வழங்குகிறது. க்ளோஸ் அறிக்கையானது கர்சருடன் தொடர்புடைய தற்போதைய முடிவு தொகுப்பை அழிக்கிறது. DEALLOCATE அறிக்கையானது கர்சரால் பயன்படுத்தப்படும் ஆதாரங்களை வெளியிடுகிறது.

DECLARE CURSOR அறிக்கையின் முதல் வடிவம் கர்சர் அளவுருக்களைக் குறிப்பிட ISO தொடரியல் பயன்படுத்துகிறது. DECLARE CURSOR அறிக்கையின் இரண்டாவது வடிவம் Transact-SQL மொழிக்கான நீட்டிப்புகளைப் பயன்படுத்துகிறது, இது ODBC மற்றும் ADO போன்ற தரவுத்தள APIகளின் கர்சர் செயல்பாடுகளில் பயன்படுத்தப்படும் அதே வகைகளைப் பயன்படுத்தி கர்சர்களை வரையறுக்க அனுமதிக்கிறது.

இந்த இரண்டு வடிவங்களும் கலக்கப்படக்கூடாது. CURSOR திறவுச்சொல்லுக்கு முன் நீங்கள் ஸ்க்ரோல் அல்லது முக்கிய வார்த்தைகளைத் தவிர்த்துவிட்டால், CURSOR மற்றும் அதற்கும் இடையே முக்கிய வார்த்தைகளைப் பயன்படுத்த முடியாது. தேர்வு_அறிக்கைமுக்கிய வார்த்தைகள். கர்சருக்கு இடையில் முக்கிய வார்த்தைகளைக் குறிப்பிடும்போது, ​​அத்துடன் தேர்வு_அறிக்கைமுக்கிய வார்த்தைகள், CURSOR முக்கிய சொல்லுக்கு முன் நீங்கள் ஸ்க்ரோல் அல்லது உணர்வற்றதைக் குறிப்பிட முடியாது.

DECLARE CURSOR அறிக்கைக்கு Transact-SQL தொடரியல் பயன்படுத்தினால் மற்றும் READ_ONLY, OPTIMISTIC அல்லது SCROLL_LOCKS விருப்பங்களைக் குறிப்பிடவில்லை என்றால், பின்வரும் இயல்புநிலை மதிப்பு கருதப்படுகிறது.

    SELECT அறிக்கை புதுப்பிப்புகளை ஆதரிக்கவில்லை என்றால் (அல்லது போதுமான அனுமதிகள் இல்லை, அல்லது புதுப்பிப்புகளை ஆதரிக்காத தொலைநிலை அட்டவணைகளை அணுகுவது போன்றவை), கர்சர் READ_ONLY என அமைக்கப்படும்.

    STATIC மற்றும் FAST_FORWARD கர்சர்கள் இயல்புநிலை READ_ONLYக்கு.

    DYNAMIC மற்றும் KEYSET கர்சர்கள் OPTIMISTICக்கு இயல்புநிலை.

பிற பரிவர்த்தனை-SQL அறிக்கைகளால் மட்டுமே கர்சர்களைக் குறிப்பிட முடியும். தரவுத்தள API செயல்பாடுகள் கர்சர்களைக் குறிப்பிட முடியாது. எடுத்துக்காட்டாக, ஒரு கர்சர் அறிவிக்கப்பட்டவுடன், OLE DB, ODBC அல்லது ADO செயல்பாடுகள் மற்றும் முறைகள் அதன் பெயரைக் குறிப்பிட முடியாது. தொடர்புடைய API செயல்பாடுகள் மற்றும் முறைகளைப் பயன்படுத்தி கர்சர் வரிசைகளைத் தேர்ந்தெடுக்க முடியாது; இந்த நோக்கத்திற்காக, நீங்கள் Transact-SQL FETCH அறிக்கைகளைப் பயன்படுத்த வேண்டும்.

கர்சர் அறிவிக்கப்பட்ட பிறகு அதன் பண்புகளை வரையறுக்க பின்வரும் சேமிக்கப்பட்ட நடைமுறைகள் பயன்படுத்தப்படலாம்.

மாறிகள் ஒரு பகுதியாகப் பயன்படுத்தப்படலாம் தேர்வு_அறிக்கை, இதில் கர்சர் அறிவிக்கப்பட்டுள்ளது. கர்சர் மாறிகளின் மதிப்புகள் அறிவிக்கப்பட்ட பிறகு மாறாது.

இயல்பாக, கர்சரால் பயன்படுத்தப்படும் காட்சிகள், அட்டவணைகள் மற்றும் நெடுவரிசைகளில் SELECT அனுமதி உள்ள அனைத்து பயனர்களுக்கும் DECLARE CURSOR அனுமதிகள் வழங்கப்படும்.

க்ளஸ்டர்டு நெடுவரிசைக் குறியீட்டைக் கொண்ட அட்டவணையில் கர்சர்கள் அல்லது தூண்டுதல்களைப் பயன்படுத்த முடியாது. இந்த வரம்பு கிளஸ்டர் அல்லாத குறியீடுகளுக்குப் பொருந்தாது; நீங்கள் கர்சர்கள் மற்றும் தூண்டுதல்களை ஒரு அட்டவணையில் கிளஸ்டர்கள் அல்லாத நிரல் அங்காடி குறியீட்டுடன் பயன்படுத்தலாம்.

A. எளிய கர்சர் மற்றும் தொடரியல் பயன்படுத்துதல்

இந்த கர்சரைத் திறக்கும்போது உருவாக்கப்பட்ட முடிவுத் தொகுப்பில் அட்டவணையின் அனைத்து வரிசைகளும் நெடுவரிசைகளும் அடங்கும். இந்த கர்சரை புதுப்பிக்கலாம், இந்த கர்சருக்கான தேர்வில் அனைத்து புதுப்பிப்புகள் மற்றும் நீக்குதல்கள் குறிப்பிடப்படுகின்றன. ஸ்க்ரோல் அளவுரு குறிப்பிடப்படாததால் மட்டுமே FETCH``NEXT பெறப்பட்டது.

vend_cursor கர்சரை அறிவிக்கவும் * வாங்குவதில் இருந்து * தேர்வு செய்யவும். விற்பனையாளர் vend_cursor ஐத் திறக்கவும்.

B. அறிக்கையைக் காட்ட உள்ளமை கர்சர்களைப் பயன்படுத்துதல்

பின்வரும் உதாரணம் ஒரு சிக்கலான அறிக்கையைக் காட்ட உள்ளமை கர்சர்களைப் பயன்படுத்துகிறது. ஒவ்வொரு வழங்குனருக்கும் ஒரு உள் கர்சர் அறிவிக்கப்படும்.

எண்ணை அமைக்கவும்; @vendor_id int, @vendor_name nvarchar (50), @message varchar (80), @product nvarchar (50) என அறிவிக்கவும்;அச்சிடு" -------- விற்பனையாளர் தயாரிப்புகள் அறிக்கை -------"; தேர்ந்தெடுக்கப்பட்ட விற்பனையாளர் ஐடிக்கு vendor_cursor கர்சரை அறிவிக்கவும், வாங்குதலில் இருந்து பெயர்.விற்பனையாளர் எங்கே விருப்பமானVendorStatus = 1 Order by VendorID; vendor_cursor ஐத் திறக்கவும். அச்சிடத் தொடங்கு " " தேர்ந்தெடு @செய்தி = "------ விற்பனையாளரிடமிருந்து தயாரிப்புகள்: "+ @vendor_name PRINT @message -- உள் கர்சரை அடிப்படையாகக் கொண்டு அறிவிக்கவும் -- வெளிப்புற கர்சரில் இருந்து vendor_id இல்.தயாரிப்பு_கர்சர் கர்சரை அறிவிக்கவும். வாங்குதலில் இருந்து பெயர் தேர்ந்தெடுக்கவும் -- வெளிப்புற கர்சரில் இருந்து மாறுபடும் மதிப்புதயாரிப்பு_கர்சரைத் திறக்கவும்.<>0 அச்சு "<>" அதே நேரத்தில் @@FETCH_STATUS = 0 BEGIN @message ஐத் தேர்ந்தெடுங்கள் = " " + @product_cursor இலிருந்து @product_cursor இலிருந்து அடுத்ததாக எடுக்கவும் product_cursor DEALLOCATE product_cursor -- அடுத்த விற்பனையாளரைப் பெறவும். END CLOSE vendor_cursor; DEALLOCATE vendor_cursor;

ஒரு எளிய கிளையன்ட் கோரிக்கைக்கான பதில் நூறாயிரக்கணக்கான வரிசைகளின் மாதிரியாக இருக்கும், இது பெரும்பாலான வாடிக்கையாளர்களுக்கு ஜீரணிக்க முடியாததாக இருக்கும். இந்த வழக்கில், வாடிக்கையாளர்களுடனான தொடர்புகளின் சிக்கலுக்கான தீர்வு, சர்வர் மற்றும் கிளையன்ட் இடையே தரவு பரிமாற்றத்திற்கான உலகளாவிய பொறிமுறையாக கர்சர்களைப் பயன்படுத்துவதாகும். கர்சர்கள் தரவுகளின் முடிவுத் தொகுப்புடன் (வினவலின் முடிவு) செயல்படுகின்றன, பயனர்களுக்கு கூடுதல் தரவு செயலாக்க திறன்களை வழங்குகின்றன:

தரவுத் தொகுப்பில் அவற்றின் வரிசை எண்ணைக் குறிப்பிடுவதன் மூலம் அட்டவணை வரிசைகளுடன் வேலை செய்ய கர்சர்கள் உங்களை அனுமதிக்கின்றன;

கர்சர்கள் சிக்கலான தரவு மாற்ற செயல்பாடுகளைச் செயல்படுத்த உங்களை அனுமதிக்கின்றன, எடுத்துக்காட்டாக, ஒரு நெடுவரிசையின் மதிப்பை மாற்றும்போது மற்ற நெடுவரிசைகளின் மதிப்புகளை மீண்டும் மீண்டும் அணுக வேண்டும்.

கர்சர் வாழ்க்கை சுழற்சி:

கர்சரை உருவாக்குதல்:அறிவிக்கவும்<имя курсора>[ உணர்ச்சியற்ற] [ ஸ்க்ரோல் ] கர்சர்< SELECT -оператор>இதற்கு (படிக்க மட்டும் | புதுப்பிப்பு)

இங்கே, உணர்வற்ற திறவுச்சொல் என்பது கர்சர் நிலையானதாக இருக்கும் (தரவின் ஸ்னாப்ஷாட்), இயல்பாகவே கர்சர் மாறும் வகையில் உருவாக்கப்படும் (ஒவ்வொரு முறையும் வரிசையை அணுகும் போது பெறுதல் மேற்கொள்ளப்படுகிறது). SCROLL முக்கிய வார்த்தையின் அர்த்தம், கர்சரை எந்த திசையிலும் உருட்டலாம், இல்லையெனில் கர்சர் "தொடர்ச்சியான" கர்சராக உருவாக்கப்படும்.

கர்சரைத் திறக்கிறது:திற [உலகளாவிய]<имя курсора>. GLOBAL என குறிப்பிடப்பட்ட கர்சர் செயல்முறை அல்லது தொகுப்பு முடிவடையும் போது தானாகவே நீக்கப்படாது.

படித்தல்தகவல்கள் : எடு [[ அடுத்த | முந்தைய | முதல் | கடைசி | ABSOLUTE n | உறவினர் n ] இருந்து ] [ உலகளாவிய ]<имя курсора>[INTO@variable_name,...]. SQL சர்வர் 2000 கர்சரில் இருந்து ஒரு வரிசையை மட்டும் படிக்க அனுமதிக்கிறது. கர்சரின் முதல் வரிசையை திரும்பப் பெறுவதே முதல் முக்கிய சொல்; கடைசி - கர்சரின் கடைசி வரி; அடுத்தது - தற்போதைய வரிக்குப் பிறகு அடுத்த வரி, திரும்பிய வரி தற்போதைய வரியாக மாறும்; முன் - தற்போதைய முன் முந்தைய; ABSOLUTE n - கர்சரில் அதன் முழுமையான வரிசை எண்ணின் மூலம் ஒரு வரியை வழங்குகிறது; RELATIVE – n கோடுகள் தற்போதைய வரிக்குப் பிறகு. பட்டியலிடப்பட்ட வரிசையில் குறிப்பிட்ட மாறிகள் ஒவ்வொன்றிலும் நெடுவரிசை தரவு சேமிக்கப்படும்.

தரவை மாற்றவும்:கர்சர்களுடன் பணிபுரிய வடிவமைக்கப்பட்ட தொடரியல் கொண்ட UPDATE கட்டளையை செயல்படுத்துகிறது.

தரவை நீக்குகிறது:கர்சர்களுடன் வேலை செய்ய வடிவமைக்கப்பட்ட தொடரியல் கொண்ட DELETE கட்டளையை செயல்படுத்துகிறது.

கர்சரை மூடுகிறது:மூடு [உலகளாவிய]<имя курсора>

கர்சரை விடுவிக்கவும்:டீலோகேட் [உலகளாவிய]<имя курсора>

கர்சரைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு:

FOR_curs CURSOR STATIC என அறிவிக்கவும்

name_rus ஆல் ஆர்டரில் இருந்து name_rus ஐத் தேர்ந்தெடுக்கவும்

அறிவிக்கவும் @name varchar(50)

fo_curs இலிருந்து @name க்கு முதலில் பெறவும்

அதே நேரத்தில் @@FETCH_STATUS=0

fo_curs இலிருந்து @name க்கு அடுத்ததைப் பெறவும்

DEALLOCATE fo_curs

2.7 மைக்ரோசாஃப்ட் SQL சர்வரில் தரவு பாதுகாப்பு மற்றும் ஒருமைப்பாட்டை உறுதி செய்தல். தரவுத்தள மேலாண்மை. பாத்திரங்கள். பயனர்களுக்கு உரிமைகளை வழங்குதல் (GRANT, DENY, REVOKE). SQL சேவையகத்தில் தரவு பாதுகாப்பிற்கான முறைகள் மற்றும் தொழில்நுட்பங்கள்.

SQL சர்வர் பாதுகாப்பு மற்றும் நிர்வாகம். .

தேர்ந்தெடுக்கப்பட்ட பாடப் பகுதிக்குள் தரவின் ஒருமைப்பாடு மற்றும் நிலைத்தன்மையை உறுதி செய்வதே DBMSன் முக்கிய பணியாகும். அமைப்பைத் தீர்ப்பதில் இருந்து தடுக்கும் காரணிகளில் ஒன்று இந்த பணி, தற்செயலாக அல்லது வேண்டுமென்றே தரவு கட்டமைப்பை அழிக்க அல்லது தரவையே மாற்ற முயற்சிக்கும் பயனர்களின் செயல்கள். இதன் விளைவாக, DBMS ஆனது உடல்ரீதியான தோல்விகளில் இருந்து மட்டுமல்ல, செயல்படுத்தப்படும் பணிகளுக்குப் போதுமானதாக இல்லாத பயனர்களிடமிருந்தும் பாதுகாக்கப்பட வேண்டும். இதைச் செய்ய, பயனர்கள் தங்கள் அதிகாரத்திற்கு அப்பாற்பட்ட செயல்களைச் செய்வதைத் தடுக்கும் ஒரு பாதுகாப்பு அமைப்பை தரவுத்தளத்துடன் வடிவமைத்து இணைக்க வேண்டியது அவசியம்.

தரவுத்தள மேலாண்மை

TSQL ஐப் பயன்படுத்தி ஒரு தரவுத்தளத்தை உருவாக்க, CREATE DATABASE கட்டளையைப் பயன்படுத்தவும், ஆனால் பொதுவாக SQL சர்வர் மேலாண்மை ஸ்டுடியோவின் திறன்கள் இந்த நோக்கத்திற்காகப் பயன்படுத்தப்படுகின்றன. IN SQL சர்வர்நிறைய தரவுத்தள செயல்பாடுகள் வரையறுக்கப்பட்டுள்ளன: கோப்பு அளவுகளை அதிகரித்தல் (குறைத்தல்), உள்ளமைவை மாற்றுதல் (ALTER கட்டளை), இணைத்தல் மற்றும் பிரித்தல், உரிமையை மாற்றுதல், பெயரை மாற்றுதல், பண்புகளைப் பார்ப்பது மற்றும் இறுதியாக, நீக்குதல் (DROP DATABASE).

பெரும்பாலான தரவுத்தள சேவையகங்களைப் போலவே, SQL சேவையகம் முழு நிர்வாக உரிமைகளுடன் ஒரு பயனரைக் கொண்டுள்ளது - இது கணினி நிர்வாகி அல்லது 'sa". ஆரம்ப சேவையக நிறுவலுக்குப் பிறகு, sa கடவுச்சொல் காலியாக உள்ளது. ஒரு புதிய தரவுத்தளத்தை உருவாக்கும் பயனர் தானாகவே அதன் உரிமையாளராகிவிடுவார் ('dbo' - தரவுத்தள உரிமையாளர்). ஒரு குறிப்பிட்ட தரவுத்தளத்தில், விருந்தினர் பெயரைப் பயன்படுத்துவதன் மூலம் பயனருக்கு மறைமுகமான அணுகல் வழங்கப்படுகிறது.

தரவுத்தளத்தில் ஒரு பொருளை உருவாக்கும் பயனர் தானாகவே அதன் உரிமையாளராகிவிடுவார், மேலும் dbo மற்றும் sa உட்பட யாரும் அந்த பொருளை உரிமையாளர் அவர்களுக்கு உரிமைகளை வழங்கும் வரை அதைப் பயன்படுத்த முடியாது. ஆனால் ஒரு பயனர் ஒரு பொருளை உருவாக்க, தரவுத்தள உரிமையாளர் முதலில் அவருக்கு பொருத்தமான உரிமைகளை வழங்க வேண்டும்.

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

db_owner. தரவுத்தளத்தில் அனைத்து உரிமைகளும் உள்ளன

Db_accessadmin. பயனர்களைச் சேர்க்கலாம் அல்லது அகற்றலாம்

Db_securityadmin. அனைத்து அனுமதிகள், பொருள்கள், பாத்திரங்கள் மற்றும் பயனர்களை நிர்வகிக்கிறது

Db_ddladmin. GRANT, DENY, REVOKE தவிர அனைத்து DDL கட்டளைகளையும் இயக்க முடியும்

Db_backupoperator. Archiver கட்டளைகளை இயக்க முடியும். தகவல்கள்

db_datareader. ஒருவேளை பார்க்கலாம். எந்த அட்டவணையில் உள்ள எந்த தரவு

db_datawriter. ஒருவேளை ஒரு திருத்தம். எந்த அட்டவணையில் உள்ள எந்த தரவு

Db_denydatareader. தடை செய்யப்பட்டுள்ளது பார்வை அன்பு எந்த ஒரு தரவு அட்டவணைகள்

Db_denydatawriter. எந்த அட்டவணையிலும் எந்த தரவையும் மாற்றுவதைத் தடுக்கவும்

பயனர்களுக்கு உரிமைகளை வழங்குதல். SQL சர்வர் பாதுகாப்பின் அடித்தளம் (1) கணக்குகள்(கணக்குகள்); (2) பயனர்கள்; (3) பாத்திரங்கள்; (4) குழுக்கள்.

ஒரு பயனர் SQL சேவையகத்துடன் இணைக்கும் போது, ​​அவர் செய்யக்கூடிய செயல்கள் ஒரு பயனராகவும் ஒரு பங்கின் உறுப்பினராகவும் அவருக்கு வழங்கப்பட்ட உரிமைகளால் தீர்மானிக்கப்படுகிறது. DBMS நிர்வாகி, தரவுத்தள உரிமையாளர் அல்லது ஒரு குறிப்பிட்ட தரவுத்தள பொருளின் உரிமையாளரால் உரிமைகள் வழங்கப்படுகின்றன. தரவுத்தளத்தில் உள்ள உரிமைகளை மூன்று வகைகளாகப் பிரிக்கலாம்: (1) தரவுத்தளப் பொருட்களை அணுகுவதற்கான உரிமைகள்; (2) TSQL கட்டளைகளை இயக்குவதற்கான உரிமைகள்; (3) மறைமுக உரிமைகள். ஒரு பயனரிடமிருந்து மற்றொருவருக்கு உரிமையை மாற்ற சேவையகம் உங்களை அனுமதிக்கிறது.

தரவுத்தள பொருட்களை அணுக பயனர் அனுமதிகளை நிர்வகிக்க பின்வரும் கட்டளைகள் பயன்படுத்தப்படுகின்றன:

கிராண்ட்(எல்லாம் |< вид действия >,…}

(ஆன்<имя таблицы или представления>} [(<имя столбца>,…)]

| ஆன்(< имя хранимой процедуры >}

| ஆன்(< имя пользовательской функции >}

TO ( பொது |<имя объекта системы безопасности>,…}

[ஏஎஸ்<имя группы> | <имя роли>]

பயனர்களுக்கு உரிமைகளை வழங்குதல், எங்கே

அனைத்தும் - பயனருக்கு சாத்தியமான அனைத்து அனுமதிகளும் வழங்கப்படுகின்றன, இல்லையெனில் குறிப்பிடவும்

<вид действия>- பயனருக்கு கிடைக்கும் செயல்களுக்கான உரிமைகள், அதாவது:

தேர்வு - பார்வைக்கு, அட்டவணை நெடுவரிசை மற்றும் அட்டவணைக்கு (பார்வை)

INSERT - ஒட்டுமொத்த அட்டவணைக்கு (பார்வை) சேர்க்க

புதுப்பிப்பு - மாற்றத்திற்காக, அட்டவணை நெடுவரிசை மற்றும் அட்டவணைக்கு (பார்வை)

DELETE – ஒட்டுமொத்தமாக அட்டவணையை (பார்வை) நீக்குவதற்கு

EXECUTE - சேமிக்கப்பட்ட நடைமுறைகளை செயல்படுத்த

குறிப்புகள் - ஒரு குறிப்பிட்ட பொருளைக் குறிக்கும் திறன் (அதை வெளிநாட்டு விசையின் ஒரு பகுதியாகச் சேர்க்கவும்).

<имя объекта системы безопасности>- SQL சர்வர் கணக்குகள், விண்டோஸ் டொமைன் பயனர்கள்; பொது - அனைத்து பயனர்களுக்கும்.

கிராண்ட் விருப்பத்துடன் - தற்போது உரிமைகள் வழங்கப்பட்ட பயனரை மற்ற பயனர்களுக்கு பொருளுக்கான அணுகல் உரிமைகளை வழங்க அனுமதிக்கிறது.

AS<имя группы> | <имя роли>- பிற பயனர்களுக்கு உரிமைகளை வழங்குவதற்கான திறனைக் கொடுக்கப்பட்ட ஒரு பாத்திரத்தில் ஒரு பயனரின் பங்கேற்பு.

பொதுமக்களுக்கு ஆசிரியர்களைத் தேர்வு செய்யவும்

மேரி, ஜான், டாம் ஆகியோருக்கு கிராண்ட் இன்சர்ட், அப்டேட், டெலிட்

கிராண்ட் விருப்பத்துடன் கணக்கியலுக்கான திட்டம்_தரவைத் தேர்ந்தெடுக்கவும்

ஜேக் ஏஎஸ் கணக்கியலுக்கான திட்டம்_தரவைத் தேர்ந்தெடுக்கவும்

ஜாக் கணக்கியல் பங்கில் உறுப்பினராக இல்லை, ஆனால் அந்த பொறுப்பில் உள்ள ஒருவர் அனுமதி வழங்க முடியும்

மறுக்கவும்(எல்லாம் |< вид действия >,…}

(ஆன்<имя таблицы или представления>} [(<имя столбца>,…)]

| ஆன்(<имя хранимой процедуры>}

| ஆன்(<имя пользовательской функции>}

TO ( பொது |<имя объекта системы безопасности>,…}

அணுகல் மறுப்புதரவுத்தள பொருள்களுக்கு பயனர்கள். CASCADE உரிமைகளை மட்டும் ரத்து செய்கிறது கொடுக்கப்பட்ட பயனர், ஆனால் அவர் உரிமைகளை வழங்கிய அனைவருக்கும்.

எடுத்துக்காட்டு (ஆன் கட்டளை தடை TSQL):

ஜாக் கேஸ்கேட் செய்ய அட்டவணையை உருவாக்க மறுக்கவும்

குழு திரும்பப் பெறுதரவுத்தளப் பொருள்களுக்கான அணுகலை மறைமுகமாக மறுக்கப் பயன்படுகிறது. தொடரியல் DENY கட்டளையைப் போன்றது. மறைமுக மறுப்பு என்பது அணுகலை மறுப்பதைப் போன்றது, அது வரையறுக்கப்பட்ட மட்டத்தில் மட்டுமே பொருந்தும். எடுத்துக்காட்டு: GoodUsers பங்கின் உறுப்பினரான Jack என்ற பயனருக்கு XFiles அட்டவணைக்கான அணுகல் உரிமைகள் வழங்கப்பட்டுள்ளன. இந்த அட்டவணையை அணுகுவதற்கு GoodUsers பங்கிற்கு REVOKE மறுக்கப்பட்டால், பயனர் Jack இந்த அட்டவணையை அணுக முடியும், ஏனெனில் அவருக்கான உரிமைகள் வெளிப்படையாக வரையறுக்கப்பட்டுள்ளன. நீங்கள் அவருக்காக தனிப்பட்ட முறையில் REVOKE ஐப் பயன்படுத்தினால், XFiles அணுகுவதற்கான உரிமையை அவர் இழப்பார்.

பாத்திரங்களுக்கு வழங்கப்படும் அனுமதிகள் அவற்றின் உறுப்பினர்களால் பெறப்படும். ஒரு பங்கில் உறுப்பினராக இருந்து ஒரு பொருளுக்கு ஒரு பயனருக்கு அணுகல் வழங்கப்பட்டு மற்றொரு பாத்திரத்தில் மறுக்கப்பட்டால், அணுகல் முரண்பாடு எப்போதும் மறுப்புக்கு ஆதரவாக தீர்க்கப்படும்.

MS SQL சேவையகத்தில் தரவு பாதுகாப்பு தொழில்நுட்பங்கள்

1.இயந்திரம் சோதனைச் சாவடிகள்புதுப்பித்த பக்கங்களை வட்டில் எழுத ~60 வினாடிகளுக்குப் பிறகு உருவாக்கப்படும் சோதனைச் சாவடிகள் (CHECKPOINT கட்டளையால் ஒரு சோதனைச் சாவடியை கட்டாயப்படுத்தலாம்).

2. தரவுத்தளத்தின் ஒருமைப்பாட்டை சரிபார்க்க உள்ளமைக்கப்பட்ட மற்றும் வெளிப்புற வழிமுறைகள் (தானாக தொடங்கப்பட்டது அல்லது DBCC பயன்பாடு - தரவுத்தள நிலைத்தன்மை சரிபார்ப்பு - கைமுறையாக).

3.ஆப்பரேட்டிங் சிஸ்டத்தைப் பயன்படுத்தி தரவுத்தளக் கோப்புகளின் இயற்பியல் நகல் (அனுமதிக்கப்பட்டால்).

4. தரவுத்தளங்கள் மற்றும் பரிவர்த்தனை பதிவுகளை காப்புப் பிரதி எடுத்தல் - காப்புப் பிரதி சாதனத்தில் (காந்த நாடா அல்லது ஹார்ட் டிரைவ்) தரவுத்தள டம்ப்பை எழுதுவதன் மூலம்.

5. பிரதி - ஒரு SQL சேவையகத்திலிருந்து மற்றொன்றுக்கு அவ்வப்போது (சில சமயங்களில், ஒத்திசைவாக) தகவலை நகலெடுக்கும் திறன்.

6. கிளையன்ட் மற்றும் சர்வர் இடையே போக்குவரத்தின் குறியாக்கம், அத்துடன் தரவுத்தள பொருள்களுடன் (சேமிக்கப்பட்ட நடைமுறைகள், தூண்டுதல்கள், முதலியன) வேலை செய்ய பயன்படுத்தப்படும் குறியீடுகளின் குறியாக்கம்

1) கர்சரின் கருத்து
ஊடாடும் SQL ஒற்றை வரிசை மற்றும் பல வரிசை வினவல்களை வேறுபடுத்துவதில்லை. உட்பொதிக்கப்பட்ட SQL இந்த வினவல்களை வித்தியாசமாக செயல்படுத்துகிறது. ஒற்றை வரி வினவல்கள் ஒரு வரியைத் திருப்பி அனுப்புகின்றன, அவற்றை நாங்கள் ஏற்கனவே உள்ளடக்கியுள்ளோம். வினவலின் முடிவு ஒன்றுக்கு மேற்பட்ட வரிசைகளாக இருந்தால், உட்பொதிக்கப்பட்ட SQL ஆனது வினவல் முடிவுகளை வரிசையாகப் பெற பயன்பாட்டை அனுமதிக்க வேண்டும். இதற்கு கர்சர்கள் பயன்படுத்தப்படுகின்றன. கர்சர் என்பது வினவலுடன் தொடர்புடைய மாறி. வினவலுடன் பொருந்தக்கூடிய ஒவ்வொரு வரிசையும் அதன் மதிப்பு. மாறிகளைப் போலவே, கர்சர்களும் பயன்படுத்தப்படுவதற்கு முன்பு அறிவிக்கப்பட வேண்டும். காட்சிகளைப் போலல்லாமல், கர்சர்கள் வரிக்கு வரி செயலாக்கத்திற்காக வடிவமைக்கப்பட்டுள்ளன.

2) கர்சர் அறிவிப்பு

அறிவிக்கவும் [{}] [[இல்லை] உருட்டவும்] கர்சர் [{உடன்|இல்லாமல்} பிடி] FOR [FOR {படிக்க மட்டும்|புதுப்பிப்பு [OF ]}]

3) முக்கிய வார்த்தைகள்
. உணர்திறன்– முடிவு தொகுப்பில் மாற்றங்கள் தெரியும் | தடைசெய்யப்பட்டது (தரவு தொகுப்பின் நகலைப் பயன்படுத்தி சரி செய்யப்பட்டது)|நகலை உருவாக்க வேண்டுமா என்பதை DBMS தான் தீர்மானிக்கிறது (இயல்புநிலையாக இயங்குகிறது).
. உடன்|பிடிக்காமல்– திறந்து விட்டு | COMMIT அறிக்கையை எதிர்கொண்டால் கர்சரை மூடுகிறது.
. உருட்டவும்– முடிவு வரிசைகளை சீரற்ற வரிசையில் பிரித்தெடுப்பதை [தடுக்கிறது].
. படிக்க மட்டுமே- படிக்க மட்டுமேயான கர்சரை வரையறுக்கிறது.
. புதுப்பித்தலுக்கு- குறிப்பிட்ட நெடுவரிசைகளை மட்டும் புதுப்பிப்பதைத் தடுக்கிறது.

4) SQL சர்வரில் கர்சரை அறிவிக்கிறது

அறிவிக்கவும் கர்சர் [உள்ளூர்|உலகளாவிய] [FORWARD_ONLY|ஸ்க்ரோல்] [STATIC|KEYSET|DYNAMIC|FAST_FORWARD] [READ_ONLY|SCROLL_LOCKS|OPTIMISTIC] FOR [புதுப்பிப்புக்காக [OF ]]

. நிலையானது- கர்சரின் பயன்பாட்டிற்காக தரவின் தற்காலிக நகலை உருவாக்கும் கர்சரை வரையறுக்கிறது. கர்சருக்கு எதிரான அனைத்து வினவல்களும் tempdb தரவுத்தளத்தில் குறிப்பிடப்பட்ட தற்காலிக அட்டவணையை அணுகும், எனவே அடிப்படை அட்டவணையில் மாற்றங்கள் அந்த கர்சருக்கான மாதிரிகள் மூலம் வழங்கப்பட்ட தரவைப் பாதிக்காது, மேலும் கர்சரே மாற்றங்களைச் செய்ய அனுமதிக்காது.
. கீசெட்- கர்சரில் உள்ள உறுப்பினர் அல்லது வரிசைகளின் வரிசை திறந்த பிறகு மாறாது என்பதைக் குறிக்கிறது. வரிசைகளை தனித்துவமாக அடையாளம் காணும் விசைகளின் தொகுப்பு tempdb தரவுத்தளத்தில் உள்ள அட்டவணையில் கீசெட் எனப்படும்.
. மாறும்- இந்த கர்சரைப் பார்க்கும்போது முடிவுத் தொகுப்பின் வரிசைகளில் செய்யப்பட்ட அனைத்து தரவு மாற்றங்களையும் காண்பிக்கும் கர்சரை வரையறுக்கிறது. ஒவ்வொரு தேர்விலும் தரவு மதிப்புகள், வரிசை மற்றும் வரிசை உறுப்பினர் ஆகியவை மாறுபடலாம். ABSOLUTE தேர்வு விருப்பம் டைனமிக் கர்சர்களால் ஆதரிக்கப்படவில்லை.
. FAST_FORWARD– செயல்திறன் மேம்படுத்தல் இயக்கப்பட்ட FORWARD_ONLY, READ_ONLY கர்சரைக் குறிக்கிறது. FAST_FORWARD விருப்பத்தை SCROLL அல்லது FOR_UPDATE விருப்பங்களுடன் குறிப்பிட முடியாது.
. SCROLL_LOCKS- நிலைப்படுத்தப்பட்ட புதுப்பிப்புகள் அல்லது கர்சர் மூலம் செய்யப்பட்ட நீக்குதல்கள் வெற்றியடையும் என்று உறுதியளிக்கிறது. SQL சர்வர் வரிசைகளை கர்சரில் படிக்கும்போது அவை அடுத்தடுத்த மாற்றங்களுக்கு கிடைக்கின்றன என்பதை உறுதிப்படுத்த பூட்டுகிறது. SCROLL_LOCKS விருப்பத்தை FAST_FORWARD அல்லது STATIC விருப்பத்துடன் குறிப்பிட முடியாது.
. நம்பிக்கையான- கர்சரில் படிக்கப்பட்ட நேரத்திலிருந்து வரிசை புதுப்பிக்கப்பட்டிருந்தால், கர்சர் மூலம் செய்யப்பட்ட நிலைப்படுத்தப்பட்ட புதுப்பிப்புகள் அல்லது நீக்கல்கள் தோல்வியடையும் என்பதைக் குறிக்கிறது. வரிசைகள் கர்சரில் படிக்கப்படுவதால் SQL சர்வர் பூட்டுவதில்லை. அதற்கு பதிலாக, கர்சரில் படிக்கப்பட்டதிலிருந்து வரிசை மாறியுள்ளதா என்பதைத் தீர்மானிக்க நேர முத்திரை நெடுவரிசையின் மதிப்புகளை (அல்லது அட்டவணையில் நேர முத்திரை நெடுவரிசை இல்லை என்றால் செக்ஸம்கள்) ஒப்பீடு செய்யப்படுகிறது. ஒரு வரிசை மாற்றப்பட்டிருந்தால், அதன் நிலை மாற்றம் அல்லது நீக்குதல் சாத்தியமில்லை. FAST_FORWARD விருப்பத்துடன் OPTIMISTIC விருப்பத்தை குறிப்பிட முடியாது.

5) கர்சரை திறக்கிறது

6) கர்சரிலிருந்து வரிசைகளை மீட்டெடுக்கிறது

எடுக்கவும் [{அடுத்த|முன்|முதல்|கடைசி|{முற்றிலும்|உறவினர் }}]
இருந்து INTO

7) கர்சர் பொருத்துதல் விருப்பங்கள்
. அடுத்த|முன்|முதல்|கடைசி– முடிவு தொகுப்பின் அடுத்த|முந்தைய|முதல்|கடைசி வரிக்கு.
. உறவினர் ±N- தற்போதைய வரியுடன் தொடர்புடைய நேர்மறை அல்லது எதிர்மறை ஆஃப்செட் கொண்ட ஒரு வரிக்கு.
. முற்றிலும் ±N- கர்சரின் ஆரம்பம் அல்லது முடிவில் இருந்து வெளிப்படையாகக் குறிப்பிடப்பட்ட முழுமையான நிலை எண் கொண்ட ஒரு வரிக்கு.

குறிப்பு: SQL சர்வர் N க்கு பதிலாக @N என்ற முழு எண் மாறியை அனுமதிக்கிறது.

8) கர்சரை மூடுகிறது

9) கர்சர்கள் பற்றிய குறிப்புகள்
. கர்சரில் ஒன்றுக்கு மேற்பட்ட வரிகள் இருந்தால், அதிலிருந்து தரவை மீட்டெடுக்க ஒரு வளையத்தை ஒழுங்கமைக்க வேண்டியது அவசியம், கடைசி வரியை அடைய அவ்வப்போது சரிபார்க்கவும்.
. அட்டவணைகள் மற்றும் காட்சிகளைப் போலன்றி, கர்சர் வரிசைகள் ஒரு பகுதியைப் பயன்படுத்தி வெளிப்படையாக வரிசைப்படுத்தப்படுகின்றன உத்தரவின் படி, அல்லது ஒரு குறிப்பிட்ட DBMS இல் ஏற்றுக்கொள்ளப்பட்ட மரபுகளின்படி.
. அட்டவணையில் இருந்து வரிசைகளின் குழுக்களைத் தேர்ந்தெடுக்கவும் கர்சர்கள் பயன்படுத்தப்படுகின்றன, அவை ஒரு நேரத்தில் புதுப்பிக்கப்படலாம் அல்லது நீக்கப்படலாம்.
. கர்சர் புதுப்பிக்கப்படுவதற்கு, அது பார்வையின் அதே அளவுகோல்களை பூர்த்தி செய்ய வேண்டும், அதாவது பிரிவுகளைக் கொண்டிருக்கவில்லை யூனியன், ஆர்டர் பை, குரூப் பை, டிஸ்டிங்க்ட்.

10) கர்சரில் இருந்து தரவை நீக்குவதற்கான எடுத்துக்காட்டு

exec sql declare cursor Cur1ஐ வாடிக்கையாளரிடமிருந்து * தேர்ந்தெடுக்கவும்
எங்கே மதிப்பீடு
// அச்சு (@f1+’ ‘+மாற்றம்(Varchar(5),@f2))
exec sql வாடிக்கையாளரிடமிருந்து நீக்கவும்
Cur1 இன் மின்னோட்டம்; ) – கர்சரில் இருந்து நீக்க தரவை எடுக்கவும்
முடிக்கவில்லை:
exec sql க்ளோஸ் கர்சர் Cur1; - கர்சரை மூடு
வெளியேறு ();

11) கமிஷன்களை அதிகரிப்பதற்கான எடுத்துக்காட்டு

exec sql declare cursor CurCust -ஐ சேல்ஸ்பீப்பில் இருந்து தேர்ந்தெடுக்கவும்
SNum உள்ள இடத்தில் (வாடிக்கையாளரிடமிருந்து SNum ஐத் தேர்ந்தெடுக்கவும், அங்கு மதிப்பீடு=300); - கர்சரை வரையறுக்கவும்
exec sql திறந்த கர்சர் CurCust; - கர்சரை இயக்கவும்
போது (sqlca.sqlcode==0) ( — அட்டவணையில் தரவைப் புதுப்பிக்க ஒரு வளையத்தை உருவாக்கவும்
exec sql ஐடி_நம், :சேல்ஸ்பர்சன், :லோக், :காம்;
exec sql update SalesPeople செட் Comm=Comm+.01 அங்கு நடப்பு
CurCust இன்; ) – கர்சரில் இருந்து புதுப்பிக்க தரவை எடுக்கவும்
exec sql க்ளோஸ் கர்சர் CurCust; - கர்சரை மூடு

S.Name, MAX(S.City) ஐ நகரமாக, SUM(O.Amt) என விற்பனை செய்பவர்களில் இருந்து SUM(O.Amt) ஐ தேர்ந்தெடு

S.Name, MAX(S.City) ஐ நகரமாகத் தேர்ந்தெடுக்க Cur1 ஸ்க்ரோல் கர்சரை அறிவிக்கவும், S.SNum=O.SNum குரூப் மூலம் S.SNum=O.SNum GROUP ஆன் S.SNum=O.SNum GROUP FROM S.SNum=O.S.MT) நகரமாக, SUM(O.Amt)
திறந்த வளைவு 1
Cur1 இலிருந்து அடுத்ததைப் பெறவும்
அதே நேரத்தில் @@FETCH_STATUS=0
ஆரம்பம்
Cur1 இலிருந்து அடுத்ததைப் பெறவும்
முடிவு
க்ளோஸ் கர்1
டீலோகேட் கர்1