Article View: cn.bbs.comp.program
Article #1189�α��ʹ��
From: ���ܵ�Сʨ
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
Technical Details
Message-ID:
<3O9QgC$tjB@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: fc86e,a938ec944d897203,start X-Google-Attributes: gidfc86e,public From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ) Subject: �α��ʹ�� Date: 1998/04/18 Message-ID: <3O9QgC$tjB@bbs.nju.edu.cn> X-Deja-AN: 345308560 X-Filename: Programming/M.892871148.A Organization: nju_bbs Newsgroups: cn.bbs.comp.program