오라클에서 사용할 프로시져나 function등의 sql문을 sqlplus에서 생성하는 것이 아니라 델파이에서 생성이 가능한지요
table Creat나 이미 만들어지 프로시져등을 컴파일하면 되는데...
프로시져를 만드는 문장을 query 컴포넌트의 sql에 넣고 ExecSQL 하면
Field '=' (다른것인경우도 있음) is of an unknown type 라는 오류메세지만 나오고 프로시져는 생성되지 않습니다.
방법이 있는지요...
With Query1 Do
Begin
Close;
With SQL Do
Begin
Clear;
Add(' CREATE OR REPLACE PROCEDURE PRC_TEST ');
Add(' IS ');
Add(' vnCNT INTEGER; ');
Add(' BEGIN ');
Add(' SELECT COUNT(*) INTO vnCNT ');
Add(' FROM CORNER ');
Add(' WHERE JUMPO = ' + '''' + 'A' + '''' + ';');
Add(' END PRC_TEST; ');
End;
ExecSQL;
End;
헌데... 프로시져내에 변수에 값을 초기화하는 문자을 넣으면 오류가 발생을 하거든요.. 그건 어찌 해결해야 할지
With Query1 Do
Begin
Close;
With SQL Do
Begin
Clear;
Add(' CREATE OR REPLACE PROCEDURE PRC_TEST ');
Add(' IS ');
Add(' vnCNT INTEGER; ');
Add(' BEGIN ');
Add(' vnCNT := 0; '); // -- 이문장삽입하면 오류가 납니다.
Add(' SELECT COUNT(*) INTO vnCNT ');
Add(' FROM CORNER ');
Add(' WHERE JUMPO = ' + '''' + 'A' + '''' + ';');
Add(' END PRC_TEST; ');
End;
ExecSQL;
End;
결론은 "된다" 입니다..
< 테스트 환경 >
개발툴: 델파이
DB : oracle
With Query1 Do
Begin
Close;
With SQL Do
Begin
Clear;
Add(' CREATE OR REPLACE PROCEDURE PRC_TEST ');
Add(' IS ');
Add(' vnCNT INTEGER; ');
Add(' BEGIN ');
Add(' SELECT COUNT(*) INTO vnCNT ');
Add(' FROM CORNER ');
Add(' WHERE JUMPO = ' + '''' + 'A' + '''' + ';');
Add(' END PRC_TEST; ');
End;
ExecSQL;
End;