�X�g�A�h�v���V�[�W���ɂ��J��Ԃ������FSQL���H�u���i22�j

» 2002�N09��12�� 00��00�� ���J

�@�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�����̌����Ƃɏ]�ƈ�����\������X�g�A�h�v���V�[�W��

�@����́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

�y��4�z�i���X�g���N���b�N����ƁA�ʃE�B���h�E�ŕ\�����܂��j �y��4�z�i���X�g���N���b�N����ƁA�ʃE�B���h�E�ŕ\�����܂��j

�@����̗���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
���1�@SelectBirthdayByMonth�X�g�A�h�v���V�[�W���̎��s���ʁi��ʂ��N���b�N����Ɗg��\�����܂��j ���1�@SelectBirthdayByMonth�X�g�A�h�v���V�[�W���̎��s���ʁi��ʂ��N���b�N����Ɗg��\�����܂��j

�@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

SelectBirthdayByMonth�X�g�A�h�v���V�[�W���̉��

�@�ł́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

�ϐ��ƃJ�[�\���̐錾

�@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

�ꎞ�e�[�u���̍쐬

�@�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������

�@���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

�I������

�@�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�������Љ��\��ł�



�uSQL���H�u���v�o�b�N�i���o�[

Copyright © ITmedia, Inc. All Rights Reserved.

�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

Microsoft �� Windows�őO��2025
AI for �G���W�j�A�����O
���[�R�[�h�^�m�[�R�[�h �Z���g���� by ��IT - IT�G���W�j�A���r�W�l�X�̒��S�Ŋ��􂷂�g�D��
Cloud Native Central by ��IT - �X�P�[���u���Ȕ\�͂�g�D��
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B