Thread View: cn.bbs.comp.program
1 messages
1 total messages
Started by ���ܵ�Сʨ
Sat, 18 Apr 1998 00:00
�α��ʹ��
Author: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
Date: Sat, 18 Apr 1998 00:00
142 lines
10186 bytes
10186 bytes
�ᵽ�α������,�����뵽��������Ļ��һ�������ķ���,����ָ
ʾ�û���Ҫ�����ַ��λ�á����ڹ�ϵ����ݿ��SQL������,�α�ȴ
������ĺ���,���Ǵ�Ž�����ݶ���
ΪʲôҪ�õ��α�
��ijЩPowerBuilderӦ�ó���Ŀ�����,����ܸ��ò����α�
����һ��������Ϊ������߿����кܶ������α�ʵ�ֵĹ���,��P
owerBuilder��ȴ����DataWindow�������ˡ���ʵ��,DataWindow����
��������α���дӺ�̨��ݿ��ѯ������¼�ĸ��Ӳ���,���һ�Զ
��ֹ��Щ������ͬDataWindow��DataStore���,�α�Ҳ�����������
��,����ϵͳ��Դռ����,�������,�ɸ����Ҫ�������������ȫ��
��ʵ���ֲ����ͺͷ���������˽�л��ȡ�
�α�IJ���
ʹ���α������ֻ�IJ���:�����αꡢ���αꡢ��ȡ��ݡ�
�ر��αꡣ
�����α�
��ʹ���������͵ı���һ��,ʹ��һ���α�֮ǰ,����Ӧ��������
���α������������������:�α�����;����α����õ���SQL���
����Ҫ����һ������Cus-tomerCursor���α����Բ�ѯ��ַ�ڱ�����
�ͻ��������ʺż������,����Ա�д���´���:
DECLARE CustomerCursor CURSOR FOR
SELECT acct_no,name,balance
FROM customer
WHERE province="����";
���α����������һ��ֵ��ע�����,��ͬ�������������һ��,
�����α����һ�δ������Dz�ִ�е�,���ܽ�debugʱ�Ķϵ�������
һ��������,Ҳ������IF...END IF�������������ͬ����α�,����
�еĴ�����Ǵ���ġ�
IF Is_prov="����"THEN
DECLARE CustomerCursor CURSOR FOR
SELECT acct_no,name,balance
FROM customer
WHERE province="����";
ELSE
DECLARE CustomerCursor CURSOR FOR
SELECT acct_no,name,balance
FROM customer
WHERE province����"����";
END IF
���α�
�������α�������������֮ǰ,���������α���ִ��
������ص�һ��SQL���,���������������һ���α�,����ֻ���
��:
OPEN CustomerCursor;
���ڴ��α��Ƕ���ݿ����һЩSQL SELECT�IJ���,��ķ�
һ��ʱ��,��Ҫȡ������ʹ�õ�ϵͳ���ܺ��������ĸ��ӳ̶ȡ���
��ִ�е�ʱ��ϳ�,���Կ��ǽ���Ļ����ʾ������Ϊhourglass��
��ȡ���
����OPEN�������α겢����ݿ���ִ���˲�ѯ��,������
�������ڲ�ѯ����е���ݡ��������FETCH�����ȡ����ݡ�һ
��FETCH���һ�ο��Խ�һ����¼�������Աָ���ı����С���ʵ��,
FETCH������α�ʹ�õĺ��ġ���DataWindow��DataStore��,ִ����R
etrieve()�����Ժ�,��ѯ�����н��ȫ�����Եõ�;��ʹ���α�,��
��ֻ��������¼�صõ���ѯ���
�Ѿ���������һ���α��,���ǾͿ��Խ���ݷ�������ı���
�С���FETCH����������ָ���α����ƺ�Ŀ���������ơ�����
��:
FETCH CustmerCursor
INTO:ls_acct_no,
:ls_name,
:ll_balance;
����Ͻ�,���������ľ���һ���Ϸ���ȡ��ݵ����,����һ��
����ʹ���α�ȴ��Ӧ����������IJ��֡���������ǰ����̸����,��
��ֻ��һ�δӺ�̨��ݿ���ȡһ����¼,���ڶ��������,��������Ҫ
����������ݿ��дӵ�һ����¼��ʼ��ȡ,һֱ��������������һ
��Ҫ���α���ȡ��ݵ�������һ��ѭ������,ֱ��������е�ȫ
�������ȡ��,���ѭ��Ȧ��ͨ����SQLCA.SQL-CODE��ֵ,���Ե�֪
���һ��FETCH����Ƿ�ɹ���һ��,��SQLCODEֵΪ0ʱ����һ����
,100��ʾ�Ѿ�ȡ���˽���ĩβ,������ֵ�����������������,��
�����ǿ��Ա�д���µĴ���:
lb_continue=True
ll_total=0
DO WHILE lb_continue
FETCH CustomerCursor
INTO:ls_acct_no,
:ls_name,
:ll_balance;
If sqlca.sqlcode=0 Then
ll_total+=ll_balance
Else
lb_continue=False
End If
LOOP
ѭ����Ľṹ�ж���,�����ᵽ��������һ�֡�Ҳ�еij���
Աϲ����һ��FETCH������ѭ�����ǰ��,ѭ�������ٷ�������һ��
FETCH���,�����SQLCA.SQLCODE�Ƿ�Ϊ100������������,ά��ʱ��
ͬʱ������FETCH���,���鷳��Щ��
�ر��α�
���α����������벻Ҫ��ǹر��α�,����һ���õı��ϰ��,
��ʹϵͳ�ͷ��α�ռ�õ���Դ���ر��α�����ܼ�:
CLOSE CustomerCursor;
ʹ��Where�Ӿ���
���ǿ��Զ�̬�ض����α��е�Where�Ӿ�IJ���,�����ڱ�������
����ֱ�Ӷ����˲�ѯʡ���DZ����ļ�¼,��Ҳ����Ӧ��������Ҫʹ��
һ������ʽ�б��,���û���ѡ��Ҫ��ѯ��ʡ��,���Ǹ���������?
������ǰ�����ᵽ��,DECLARE��������ֻ�Ƕ���һ���α�,
��OPEN���������α�Ż�����ر�ִ�С��˽�����Щ,���ǾͿ���
�ܷ����ʵ������Ĺ���,��DECLARE��Where�Ӿ��м������������,
������ʾ:
DECLARE CustomerCursor CURSOR FOR
SELCECT acct_no,name,balance
FROM customer
WHERE province=:ls_province;
�ζ���ls_province��ֵ
OPEN CustomerCursor;
������
ͬ�������һ��,����Ҳ���Զ����α�ķ�������:ȫ�֡����?
ʵ���ֲ�,�α����������淶����Ҳͬ�������һ��
�α�ĸ�����
����Ŀǰ����SQL���ĺ�̨��ݿ���֧�ֵ����Զ������൱,��
���α��֧��ȴ����һЩ����,����Թ����α�֧�֡���ν�����α�,
���dz���Ա����ָ���α���ǰ������һ���������������Informix��
,�����������Խ��α������ͷ��ĩβ,ʹ�õ����ֱ���FET
CH FIRST,FETCH LAST��FETCH PRIOR��FETCH NEXT��������Ա��FETC
H���,��ȱʡ��ָFET CH NEXT�����ڹ���������ݿ��̨ʵ�ֵ�,��
�Թ����α�Ϊ�û�����ṩ�˼���ķ��㡣
���α�֧�ֵ���һ����ͬ�ǿ����αꡣ�����α��ʹ�ö���ָ
ֻ���α�,����Oracle ��Sybase����ݿ�ȴ����֧�ֿ����ĵ��α�
��ʹ���������ݿ�,������Ļ�ɾ��ǰ�α����ڵ��С�������
�ĵ�ǰ�α������е��û������,���ǿ������²���:
UPDATE customer
SET balance=1000
WHERE CURRENT of customerCursor;
ɾ��ǰ�еIJ�������:
DELETE FROM Customer
WHERE CURRENT OF CustomerCursor;
���������ǰʹ�õ���ݿ���Sybase,����Ҫ����ݿ�IJ�
��,���α���ĵ�ֵ��Ϊ1,����ִ��������������һ��ֵ��������
�ݿ��ǰ����о�ɡ�
SQLCA.DBParm="Cursor Update=1"
����һ�������Ƕ�̬�α�,Ҳ����˵��������й���ж�̬����
���α��SELECT��䡣��ͬ��PowerBuilder�ж�̬��ʹ��Ƕ��ʽSQL
һ��,��Ҫ�õ�DynamicStagingArea���������,���ѳ����˱��ڵķ�
��
--
[m[1;37m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn][m
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads