* 사용환경 : 델파이5 / Windows 2000 /db : sql2000
* 에러 메시지 : 콤포넌트에서 parameter를 만들고 connect를 하면 프로시져를 찾지를 못하겠다는 에러를 발생하더군요....
안녕하세요?
스토어 프로시저 콤포넌트를 사용하면서 느낀 건데...
넘겨주고 받는 parameter값이 있으면 프로시저를 찾지를 못한다고 합니다.
그렇지 않고 단지 프로시져를 실행만 시키는 스토어 프로시져는 바로 연결이 됩니다.
그래서 안되겠다 싶어 무식한 방벙을 사용할려고 합니다.
소스 내에서 프로시저를 실행하는 코드를 넣고 execute를 시켰을때 리턴 되어 오는 값을 받을 수 있는 함수 같은 것이 있나요?
예)
ssql :='declare @bb char(8),@cc char(10),@a int '+
'select @bb =''20010101'' '+
'select @cc =''001234'' '+
'exec @a = 프로시저_명 @aa ,@bb ';
s := query.ExecSql(ssql);
memo1.lines.add(s);
이렇게 했을때 리턴값 "@a"을 받을수 있는 방법은 있나요?
에러가 나더군요...
답변 부탁드립니다.
> * 사용환경 : 델파이5 / Windows 2000 /db : sql2000
> * 에러 메시지 : 콤포넌트에서 parameter를 만들고 connect를 하면 프로시져를 찾지를 못하겠다는 에러를 발생하더군요....
>
> 안녕하세요?
> 스토어 프로시저 콤포넌트를 사용하면서 느낀 건데...
> 넘겨주고 받는 parameter값이 있으면 프로시저를 찾지를 못한다고 합니다.
> 그렇지 않고 단지 프로시져를 실행만 시키는 스토어 프로시져는 바로 연결이 됩니다.
>
> 그래서 안되겠다 싶어 무식한 방벙을 사용할려고 합니다.
>
> 소스 내에서 프로시저를 실행하는 코드를 넣고 execute를 시켰을때 리턴 되어 오는 값을 받을 수 있는 함수 같은 것이 있나요?
>
> 예)
> ssql :='declare @bb char(8),@cc char(10),@a int '+
> 'select @bb =''20010101'' '+
> 'select @cc =''001234'' '+
> 'exec @a = 프로시저_명 @aa ,@bb ';
>
> s := query.ExecSql(ssql);
> memo1.lines.add(s);
>
> 이렇게 했을때 리턴값 "@a"을 받을수 있는 방법은 있나요?
> 에러가 나더군요...
> 답변 부탁드립니다.
>
제가 쓰던 방법인데염...
참고가 될지는 모르겠어요
Database1.Connected := true;
Database1.StartTransaction;
> ssql :='declare @bb char(8),@cc char(10),@a int '+
> 'select @bb =''20010101'' '+
> 'select @cc =''001234'' '+
> 'exec @a = 프로시저_명 @aa ,@bb ';
>
> s := query.ExecSql(ssql);
스토어드 프로시저를 사용하시면 먼저 디비와 연결후 스토어드 프로시저 콤포넌트의 property에서 StoredProcName에서 프로시저 네임을 설정하고 변수도 설정해주고요
코딩은 다음처럼..
var strA : String;
StoredProc1.Prepare;
StoredProc1.ParamByName('@bb').AsString := '20010101';
StoredProc1.ParamByName('@cc').AsString := '001234';
StoredProc1.ExecProc;
strA :=StoredProc1.ParamByName('@a').AsInteger;
그냥 SQL로 하시더라도
ssql :='declare @bb char(8),
@cc char(10),
@a int '+
'select @bb =''20010101'' '+
'select @cc =''001234'' '+
'exec @a = 프로시저_명 @aa ,@bb ';
s := query.ExecSql(ssql);
strA :=QUERY.ParamByName('@a').AsInteger;
이렇게 주면 되지 않을까 하는 생각이 드는데염...
안해봐서 확실하진 않지만..