Q&A

  • Stored Procedure 에서 Select문은 사용이 안되나요?....
더운 날씨에 수고하십니다

다름이 아니라

오라클 PL/SQL 로 개발을 하고있는데

조회전용 PL/SQL 을 만들고 싶습니다.

그러니까... 단지 테이블의 데이터를 조건에 맞추어 Select 하고 싶은데

꼭 Select....Into.... from 테이블 Where 조건

이런 형태로밖에 작성이 안되는 건지...



일반 SQL 문처럼 Select * from 테이블 Where 조건 이런식으로는 표현이 불가능 합니까?



<현재 구성되어있는 방법입니다>

-파라메터 선언하고

-Declare 부문에 변수 선언하고

-Cursor open 해서

-Fetch 해서

-조건에 맞는 데이터를 Select 해서

-임시 테이블에 Insert 시키고

-델파이 폼에서 임시테이블의 결과Set을 Grid에 출력하고...



그리고

델파이의 StoreProc 컴포넌트를 Query 컴포넌트 처럼 사용해서

DBGrid에 결과 DataSet을 출력하고 싶은데...

잘 안되네요..................





Client용 StoreProc 컴포넌트 사용법은 대강 알고 있습니다

해결방법만 알려주시면 고맙겠습니다...



2  COMMENTS
  • Profile
    김정훈 2000.08.17 21:41
    ORACLE의 사용 예제입니다.

    우선은 Pakage 선언부에 다음과 같이 선언합니다.

    ===============================================

    Pakage test IS

    type temp record

    (

    dept emp.dept%TYPE;

    name emp.name&TYPE;

    );



    type tmplist IS REF CURSOR RETURN emp%ROWTYPE;

    type emplist IS REF CURSOR RETURN temp;

    END;

    ===============================================



    Procedure는 다음과 같이 작성합니다.



    ===============================================

    procedure apache(tmplist IN OUT test.tmplist) IS

    BEGIN

    OPEN tmplist FOR

    SELECT * FROM EMP;

    END;



    procedure apache1(emplist IN OUT test.emplist) IS

    BEGIN

    OPEN emplist FOR

    SELECT dept, name FROM EMP;

    END;

    ===============================================



    delphi에서 StoredProc 컴포넌트의 StoreProcName을 선택합니다.

    Params를 선택하면 인자의 값이 자동으로 나타나는데 DataType을 ftCursor로 하시면됩니다.

    만일 나타나지 않으면 Param를 하나생성해서

    DataType:ftCursor,

    Name:emplist or tmplist(StoredProc의 인자 변수명과 일치),

    ParamType:ptInputOutput 으로 하시면됩니다.

    그런후에 DataSource를 StoredProc에 연결시키고, 연결된 DataSource를 DBGrid 등의

    데이터 컴포너트에 연결하시면 작성된 값들이 TQuery와 같이 표현됩니다.

    Insert, Update, Delete 등도 가능합니다.



    기타 문의 사항은 메일을 주십시요....



  • Profile
    허춘 2000.08.11 07:20
    김용성 wrote:

    > 더운 날씨에 수고하십니다

    > 다름이 아니라

    > 오라클 PL/SQL 로 개발을 하고있는데

    > 조회전용 PL/SQL 을 만들고 싶습니다.

    > 그러니까... 단지 테이블의 데이터를 조건에 맞추어 Select 하고 싶은데

    > 꼭 Select....Into.... from 테이블 Where 조건

    > 이런 형태로밖에 작성이 안되는 건지...

    >

    > 일반 SQL 문처럼 Select * from 테이블 Where 조건 이런식으로는 표현이 불가능 합니까?

    >

    > <현재 구성되어있는 방법입니다>

    > -파라메터 선언하고

    > -Declare 부문에 변수 선언하고

    > -Cursor open 해서

    > -Fetch 해서

    > -조건에 맞는 데이터를 Select 해서

    > -임시 테이블에 Insert 시키고

    > -델파이 폼에서 임시테이블의 결과Set을 Grid에 출력하고...

    >

    > 그리고

    > 델파이의 StoreProc 컴포넌트를 Query 컴포넌트 처럼 사용해서

    > DBGrid에 결과 DataSet을 출력하고 싶은데...

    > 잘 안되네요..................



    I think stored procedure can only return single result set.

    I'm not sure if there's alternate way with oracle.