🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1189

�α��ʹ��

#1189
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
142 lines
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���������,���ѳ����˱��ڵķ�
��

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3O9QgC$tjB@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show 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