�@�O��́u��������̂���X�g�A�h�v���V�[�W���v�Ɉ��������A�X�g�A�h�v���V�[�W���̍쐬�ɒ��킵�܂��B����́A�O���IF���ɂ���������AWHILE���ɂ��J��Ԃ����s����SQL�����g�p�����X�g�A�h�v���V�[�W�������グ�܂��B
�@�ł͑����A�������s���Ȃ���ASQL�̊m�F�����Ă����܂��傤�B
����o�ꂷ��X�g�A�h�v���V�[�W���̃R�}���h�Q�́ASQL Server 2000���ނɉ�����Ă��܂�
�@����́A�]�ƈ��e�[�u���iEmployees�j�ɕۑ�����Ă���a�����iBirthDate�j����ɁA�a���������Ƃ̏]�ƈ����X�g���쐬����X�g�A�h�v���V�[�W�����쐬���܂��B�N�G���A�i���C�U���牺�L��SQL�����s���ASelectBirthdayByMonth�Ƃ����X�g�A�h�v���V�[�W�����쐬���Ă݂܂��傤�B
�@����̗���SQL���������ƒ����Ȃ�܂����̂ŁA�s���Ƀ��C���i���o�[�����܂����B�������A�N�G���A�i���C�U����SQL������͂���ꍇ�͍s�ԍ����K�v����܂���̂ŁA���ӂ��Ă��������ˁB�ł͑����A�X�g�A�h�v���V�[�W�������s���Ă݂܂��傤�BSelectBirthdayByMonth�X�g�A�h�v���V�[�W���͈��������܂���̂ŁAEXEC�ł��̂܂��s���܂��B
�y��2�z
EXEC SelectBirthdayByMonth
�@SelectBirthdayByMonth�X�g�A�h�v���V�[�W�������s����ƁABirthMonth��ɂ�1�`12�������ɕ\������A���ꂼ��̌��ɒa����������]�ƈ��̐����iFirstName��LastName�j���\������܂��B�]�ƈ��̐����̌��́i�@�j�̒��ɂ́A���̏]�ƈ��̒a�����̓��t���\������܂��B�����a�����̏]�ƈ��������l����ꍇ�́A���ɕ���ŕ\������܂��B����́ASELECT�������ł͂Ȃ��Ȃ��쐬����̂�����\�̌`���ł��B
�@�ł́ASelectBirthdayByMonth�X�g�A�h�v���V�[�W���̒�`�����Ă����܂��傤�B�܂��A1�s�ڂł�CREATE PROCEDURE��ŃX�g�A�h�v���V�[�W���̖��̂��w�肵�Ă��܂��B��1�ł�SelectBirthdayByMonth�����̂ŁA�����͂���܂���B2�s�ڂ́A�O��������BEGIN��ŁA�X�g�A�h�v���V�[�W���̒�`�{�̂̊J�n�ʒu���w�肵�܂��B�Ή�����END��́A51�s�ڂ̍Ō��END�ł��B
�@SelectBirthdayByMonth�X�g�A�h�v���V�[�W���̖{�̂́A�傫��������5�̕����ō\������Ă��܂��B
(1) �ϐ��ƃJ�[�\���̐錾
�X�g�A�h�v���V�[�W�����Ŏg�p���郍�[�J���ϐ��ƃJ�[�\����錾���܂�
(2) �ꎞ�e�[�u���̍쐬
�X�g�A�h�v���V�[�W�����Ŏg�p����ꎞ�e�[�u�����쐬���܂�
(3) ����������
�ϐ���ꎞ�e�[�u���̏����������s���܂�
(4) ���C������
�X�g�A�h�v���V�[�W���̃��C�����������s���܂�
(5) �I������
�X�g�A�h�v���V�[�W���̏I���O���������s���܂�
�@�ł́A���Ɍ��Ă����܂��傤�B
�@4�s�ڂ́A�uDECLARE�v�Ƃ����V�o��SQL�����o�ꂵ�Ă��܂��B����́A���[�J���ϐ��̐錾�ƁA���̌��������u�J�[�\���v��錾����ۂɎg�p����SQL���ł��B4�s�ڂł́A�X�g�A�h�v���V�[�W�����Ŏg�p���郍�[�J���ϐ��̐錾���s���Ă��܂��B�����͈ȉ��̒ʂ�ł��B
DECLARE �i�ϐ����j�i�f�[�^�^�j
�@��1�ł́A@EmployeeName�A@BirthDate�A@Counter�Ƃ������̂�3�̕ϐ���錾���Ă��܂��B
DELCLARE�Ő錾����ϐ��̓��[�J���ϐ��ł��̂ŁA�X�g�A�h�v���V�[�W���̎��s���I������i�K�Ŏ����I�Ɏg�p�ł��Ȃ��Ȃ�܂��B
�@���ɁA8�`10�s�ڂ�DECLARE���ł́A�J�[�\����錾���Ă��܂��B�J�[�\���Ƃ́ASELECT���̎��s���ʂ�1�s�����o�����Ƃ��ł���֗��Ȏd�g�݂ł��B�ʏ��SELECT���ł͌��ʂ�\�̌`�ŕԂ��܂��̂ŁATransact-SQL�̂悤�ȃv���O���~���O�����1�s�����炩�̏������������ꍇ�ɂ́A�J�[�\�����g�p���܂��B�J�[�\���̐錾�́A�ȉ��̏����ōs���܂��B
DECLARE �i�J�[�\�����j CURSOR FOR �i�J�[�\�����g�p����SELECT���j
�@��1�ł́AEmployeeBirthday�Ƃ����J�[�\����錾���Ă��܂��BEmployeeBirthday�J�[�\���́AEmployees�e�[�u������]�ƈ����iFirstName�{LastName�j�ƒa�����iBirthDate�j��1�s�����o����悤��SELECT�����w�肵�Ă��܂��B
�@�����Ő錾����EmployeeBirthday�J�[�\���́A���̌�AFETCH�Ƃ���SQL����1�s�����o�����������s���܂��B
�@�a�����Ə]�ƈ����̌��ʃ��X�g��ۑ����邽�߂̈ꎞ�e�[�u�����A13�s��?15�s�ڂō쐬���܂��B�ʏ�̃e�[�u����CREATE���ō쐬����ƁA�f�[�^�x�[�X��ɕۑ����\�Ȍ`�ō쐬����܂��B�����Ő錾����ꎞ�e�[�u���́A�f�[�^�x�[�X��ł͂Ȃ��A�f�[�^�x�[�X�T�[�o�̃������ɉ��z�I�ȃe�[�u�����쐬���܂��B�ꎞ�e�[�u���̓X�g�A�h�v���V�[�W���̎��s���I������ƃ������ォ�玩���I�ɍ폜����܂��̂ŁA��ɐ錾���������[�J���ϐ��̃e�[�u���łƍl���邱�Ƃ��ł��܂��B�ꕔ����͂�����̂́A�X�g�A�h�v���V�[�W�����ł͒ʏ�̃e�[�u���Ɠ����悤��SELECT���Ńf�[�^�𒊏o������AINSERT��UPDATE�Ńf�[�^�̓o�^���s�����肷�邱�Ƃ��ł��܂��B
�@�ꎞ�e�[�u���̐錾�́A�ʏ��CREATE���Ɠ����ł����A�e�[�u�����̓��Ɂu#�v��t���邱�ƂŁA�쐬����e�[�u�����ꎞ�e�[�u���ł��邱�Ƃ��w�肵�܂��B
�@SelectBirthdayByMonth�X�g�A�h�v���V�[�W���ł́A�u#Calendar�v�Ƃ����ꎞ�e�[�u�����쐬���܂��B#Calendar�e�[�u���ɏ����������f�[�^�������ۑ����Ă����A�Ō��#Calendar�ꎞ�e�[�u���̓��e��SelectBirthdayByMonth�X�g�A�h�v���V�[�W���̌��ʂƂ��ĕԂ��܂��B
�@18�s�ڂł́A�uSET�v�Ƃ����V�o��SQL�����o�ꂵ�Ă��܂��BSET���́A���[�J���ϐ��ւ̒l�̑���ƁASQL Server�ɂ�����SQL�̎��s�����ꎞ�I�ɕύX����ۂɎg�p����SQL���ł��B
�@18�s�ڂ́ASQL���s���ύX�̗�ł��BSET NOCOUNT OFF�́ASELECT�������s�����Ƃ��ɃN�G���A�i���C�U�̃��b�Z�[�W�^�u�ɕ\�������u(X
����������܂���)�v�Ƃ������b�Z�[�W���o���Ȃ��悤��SQL���s����ύX���܂��B���s���̕ύX���ʂ̓X�g�A�h�v���V�[�W���̒��ł̂ݗL���ł��̂ŁA���s���I������ƃX�g�A�h�v���V�[�W�������s�����O�̏�ԂɎ����I�ɖ߂�܂��B
�@�X�g�A�h�v���V�[�W���ł́A�ŏI���ʂł͂Ȃ��r���̏����Ŏg�p����SELECT������������g�p���܂��BSELECT�������s���邽�тɁu(X ����������܂���)�v�Ƃ������b�Z�[�W��\������ƁAPRINT���Ŗ����I�ɕ\������d�v�ȃ��b�Z�[�W�Ȃǂ������ɂ����Ȃ���肩�A���b�Z�[�W��SQL Server����N���C�A���g�ɑ��M���邽�߃l�b�g���[�N�ɖ��ʂȕ��ׂ��|���܂��B���̂��߁A�X�g�A�h�v���V�[�W���ł�SET NOCOUNT OFF�ɂ�郁�b�Z�[�W�}�������ʓI�ł��B
�@���ɁA20�s�ڂ���26�s�ڂŁA��قǍ쐬����#Calendar�ꎞ�e�[�u�������������܂��B�����ł̏������̖ړI�́A1������12���܂ł̋�̃f�[�^���쐬���邱�Ƃł��B
�@�܂�20�s�ڂŁA���ɐ�������WHILE���Ŏg�p����J�E���^�ł���@Counter���[�J���ϐ��ɁA�����l�ł���u1�v���Z�b�g���Ă��܂��B����́ASET���́u���[�J���ϐ��ւ̒l�̑���v�̗�ł��B���[�J���ϐ��ɒl��������ꍇ�́A�ȉ��̏������g�p���܂��B
SET �i�ϐ����j �� �i�������l�j
�@���āA21�s�ڂ���26�s�ڂ́A�uWHILE�v�Ƃ����V�o��SQL���ł��BWHILE���͂ق��̃v���O���~���O����Ɠ��l�A�����̌J��Ԃ����s���܂��B�����͈ȉ��̂Ƃ���ł��B
WHILE �i�������j �i���s����SQL����SQL�u���b�N�j
�@21�s�ڂł́A���������u@Counter < 13�v�Ƃ��Ă��܂��̂ŁA@Counter��12�ȉ��̏ꍇ�ɌJ��Ԃ����[�v���܂��B@Counter�ϐ��̓��[�v�̒���25�s�ڂ�1���J�E���g�A�b�v�����悤�ɂ��܂����̂ŁA���ʂƂ��āA@Counter��1����12�܂ŁA12��J��Ԃ����s����܂��BBASIC����́uFOR Counter = 1 to 12�@�`�@NEXT�v�Ɠ������[�v�ɂȂ�܂��B
�@���[�v�̒��Ŏ��s���鏈���́A#Calendar�e�[�u���ւ�INSERT�����ł��B#Calendar��BirthMonth��ɁA�J�E���^�ł���@Counter���[�J���ϐ��̒l���Z�b�g���Ă��܂��BEmployee��ɂ́u�f�f�v�i������0�̕����j�������l�Ƃ��ăZ�b�g���Ă��܂��B
�@�ȏ�ŁA���C�����������s���邽�߂̏������I���܂����B
�@���C�������ł́A�錾����EmployeeBirthday�J�[�\������1�s���ǂݍ��݁A�ǂݍ��]�ƈ��̒a�����̌����L�[��#Calendar�ꎞ�e�[�u�����������āA���̍s��Employees��ɏ]�ƈ�����lj����Ă����܂��B
�@�܂��A29�s�ڂ́A�uOPEN�v�Ƃ����V�o��SQL���ł��BOPEN���́A�J�[�\�����g�p�ł���悤�ɏ������܂��B���ۂɂ́A�J�[�\���ɒ�`����SELECT�������s���āA���̌��ʃ��X�g�̑�0�s�ڂɁu���ݍs�v���Z�b�g���܂��B�u���ݍs�v�́A�J�[�\�����Ǘ����Ă���ǂݏo�����s�̌��݈ʒu�ł��B
�@OPEN�����J�[�\���́A���p���I��������CLOSE���܂��B48�s�ڂ��Y�����܂��BOPEN����CLOSE���̏����͈ȉ��̂Ƃ���ł��B
OPEN �i�J�[�\�����j
CLOSE �i�J�[�\�����j
�@31�s�ڂ�32�s�ڂł́A�uFETCH�v�����g�p���āA�J�[�\������1�s��ǂݍ���ł��܂��BFETCH���̏����́A�ȉ��̂Ƃ���ł��B
FETCH �iFETCH�^�C�v�j�i�J�[�\�����j INTO �i���ʂ�ۑ����郍�[�J���ϐ��j
�@FETCH�^�C�v�́A�u�ǂ̍s��ǂݍ��ނ��v�̎w������܂��B����̗�ł́uNEXT�v�Ǝw�肵�āA�u���ݍs�v�̎��̍s��ǂݍ��ނ悤�Ɏw�肵�Ă��܂��B���̂ق��ɁA�ŏ��̍s��ǂݍ��ށuFIRST�v�A�Ō�̍s��ǂݍ��ށuLAST�v�Ȃǂ̃I�v�V�������w��\�ł����ANEXT�ȊO��FETCH�^�C�v���g�p����ꍇ�ɂ́A�J�[�\����錾����ۂɁuSCROLL�v�I�v�V�������w�肷��K�v������܂��B
�@�u���ݍs�v��OPEN�������s��������́u0�s�ځv�ɃZ�b�g����܂��̂ŁA�ŏ���FETCH NEXT�����s�����1�s�ڂ��ǂݍ��܂�܂��B�����āA�u���ݍs�v�͓ǂݍ��s�Ɏ����I�ɃZ�b�g��������܂��̂ŁA����FETCH NEXT�����s�����ۂ́A2�s�ڂ��ǂݍ��܂�܂��B
�@���̂悤��FETCH NEXT�ōŏ��̍s���珇�ɓǂݍ���ł����ƁA�����͍Ō�̍s���ēǂݍ��݂����s���邱�ƂɂȂ�܂��B�Ō�̍s�����Ƃ��́A�������f�[�^�͓ǂݍ��܂ꂸ�A���̑���Ɂu@@FETCH_STATUS�v�Ƃ����O���[�o���V�X�e���ϐ����u-2�v�ɃZ�b�g����܂��B�O���[�o���V�X�e���ϐ��́ASQL�̎��s���ʃX�e�[�^�X�Ȃǂ�ۑ����邽�߂̕ϐ��ŁA�錾�����邱�ƂȂ��V�X�e���������I�ɍ쐬����ϐ��ł��B@@FETCH_STATUS�̂ق��ɁASELECT���̌��ʍs����ۑ����Ă���u@@ROWCOUNT�v�Ȃǂ�����܂��B@@FETCH_STATUS �́A����̗�ł�WHILE���Ń��[�v�I�������Ɏg�p���܂��B
�@32�s�ڂ́AFETCH�̌��ʂ����[�J���ϐ��Ɋi�[���邽�߁AINTO����g�p���Ă��܂��B�J�[�\���Ɏw�肵��SELECT���̌��ʗ�̐������A���[�J���ϐ����w�肷��K�v������܂��B�����ł́A��ɐ錾����@EmployeeName��@BirthDate���w�肵�Ă��܂��B
�@34�s�ڂ���43�s�ڂ��A�܂���SelectBirthdayByMonth�X�g�A�h�v���V�[�W���̗v�̃��[�v�����ł��B��قǐ��������Ƃ���A34�s�ڂ�@@FETCH_STATUS��0�̊ԁiFETCH������I�����Ēl���ǂݍ��߂��ꍇ�̃X�e�[�^�X�j�A���[�v������悤�w�肵�Ă��܂��B
�@36�s�ڂ���39�s�ڂŁA�ǂݍ���@BirthDate�����#Calendar�ꎞ�e�[�u�����������A�Y������s��Employees��ɏ]�ƈ�����lj����Ă��܂��B����UPDATE���̒��ŁA�V�o�̊���3�g�p���Ă��܂��BMONTH����DAY���́A���ꂼ��DATETIME�^�̒l����u���v�ɊY�����鐔�l�Ɓu���t�v�ɊY�����鐔�l�����o���܂��B
�@���ɁACAST���́A�l�̃f�[�^�^��ϊ�������ł��B�����͈ȉ��̂Ƃ���ł��B
CAST�i �i�ϊ����錳�̒l�j AS �i�ϊ���̃f�[�^�^�j �j
�@���̗�ł́ADAY�����Ԃ������t�̐��l���A�����^�i�uNVARCHAR(2)�v�j�ɕϊ����āA�ق��̕�����Ƃ̌������ł���悤�ɂ��Ă��܂��B
�@���āA41�`42�s�ڂ́A���̍s�̏����Ɍ����Ă�FETCH NEXT�ł��B���e�͐�ق�31�`32�s�ڂɋL�q�������̂Ɠ����ł��B
�@���C���̃��[�v�������I������ƁA#Calendar�ɂ͌��ʂ̏�ۑ�����Ă��܂��B45�s�ڂł́ASelectBirthdayByMonth�X�g�A�h�v���V�[�W���̎��s���ʂ�Ԃ����߂ɁA#Calendar����S�s�S���ڂ�SELECT���Œ��o���Ă��܂��B
�@�g�p�����J�[�\����CLOSE�����ƃ���������̊J�������iDEALLOCATE�j�����{���Ă��܂��B����ŁA���ׂĂ̏����͏I���܂����B
����́AWHILE�����g�p�����X�g�A�h�v���V�[�W���̍쐬�ɂ��ĉ�����܂����B����́A�l��\��߂�l�Ƃ��ĕԂ��X�g�A�h�E�t�@���N�V�������Љ��\��ł�
Copyright © ITmedia, Inc. All Rights Reserved.