例如,在sql/plus中如下可以通过SQL> var test varchar2(50);
SQL> exec ss('8044',:test);PL/SQL procedure successfully completed
test
8044---------
但是,到Delphi中这样调用却不行,怎么弄?
ado1.Close;
ado1.SQL.Clear;
ado1.SQL.Add('var test varchar2(50);');
ado1.SQL.Add('exec ss(''8044008'',:test)');
ado1.open;用ADOStoredProc可以做到,但我想请教用adoquery怎么做?
SQL> exec ss('8044',:test);PL/SQL procedure successfully completed
test
8044---------
但是,到Delphi中这样调用却不行,怎么弄?
ado1.Close;
ado1.SQL.Clear;
ado1.SQL.Add('var test varchar2(50);');
ado1.SQL.Add('exec ss(''8044008'',:test)');
ado1.open;用ADOStoredProc可以做到,但我想请教用adoquery怎么做?
ado1.SQL.Add('exec ss("8044008",:test)'); 顺便问下,test前面加冒号是什么作用
ss(参数1 in,参数2 out)在DELPHI中,先var test string;
再运行
ado1.SQL.Add('exec ss(''8044008'',:test)');
却得不到第二个参数的返回值
begin
CommandType:= cmdStoredProc;
CommandText:='spName';
Parameters.CreateParameter( '参数1', ftString, pdinput, 100, '12121' );
Parameters.CreateParameter( '参数2', ftString, pdoutput, 100, '' );
Execute;
showmessage( Parameters[1].Value );
end;
Query.SQL.Add('declare @A int');
Query.SQL.Add('execute @A=存储过程 ');
Query.SQL.Add('@P =' + QuotedStr(参数));
try
Query.ExecSQL;
except
on E: Exception do
begin
E.Message=......//这里就是存储过程里的RAISERROR
end;
end;
?
?
如:my_proc(参数1 in,参数2 out), 参数2是array[10]字符类型2.假设上面的Oracle存储过程已经写好,那么在Delphi中如何调用这个存储过程得到返回值?
如:var a : 数组型的
a := my_proc;
可以这样取得a的值吗?