🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: cn.bbs.comp.program
1 messages
1 total messages Started by ���ܵ�Сʨ Sat, 18 Apr 1998 00:00
�α��ʹ��
#1189
Author: ���ܵ�Сʨ
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]
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