gpt4 book ai didi

oracle - 存储过程在Delphi中保存文本

转载 作者:行者123 更新时间:2023-12-03 18:44:04 25 4
gpt4 key购买 nike

我需要使用TQuery从delphi将存储过程创建到oracle中。
但是SQL.text很难理解。
有什么方法可以将直接文本存储为不带引号的pl / SQL?

'create or replace '+
'function WholeTableRecovery(i_tablname IN varchar) return varchar '+
'as '+


资源文件有可能吗

提前致谢

最佳答案

由于您在标记中使用的是Delphi 2010(我这里没有要测试的Delphi 7),因此一种舒适的方法是将SQL存储在单独的文本文件中,以及一个包含资源编译器指令的RC文件。


RC文件将包含要使用的资源的名称以及包含要存储的SQL的文件名。该示例的内容如下所示:

My_First_Speaking_ResourceName RCDATA "MyFirstSQL.sql"
My_Second_Speaking_ResourceName RCDATA "MySecondSQL.sql"


如果包含包含RC和结果RES的资源,则无需直接调用 BRCC32

{$R 'MySQLResources.res' 'resources\MySQLResources.rc'}


为了方便起见,可以包装TResourceStream的用法,示例中显示的方式将使用Strings,也可以直接使用流,如TLama MyQuery.SQL.LoadFromStream(rs);所述。

implementation

{$R *.dfm}

{$R 'MySQLResources.res' 'resources\MySQLResources.rc'}

function LoadSqlResource(resourceName: string): string;
var
rs: TResourceStream;
sl: TStringList;
s : string;
begin
sl := TStringList.Create;
try
rs := TResourceStream.Create(hinstance, resourceName, RT_RCDATA);
try
rs.Position := 0;
sl.LoadFromStream(rs);
Result := sl.Text;
finally
rs.Free;
end;
finally
sl.Free;
end;
end;

procedure CallOneSql(Q:TADOQuery;ResourceName:String);
begin
Q.SQL.Text := LoadSqlResource('My_First_Speaking_ResourceName');
Q.ExecSQL;
end;


CallOneSql(MyQuery,'My_First_Speaking_ResourceName');这样的电话

确保创建项目,而不是仅对RC或SQL文件进行更改的情况下进行编译。

关于oracle - 存储过程在Delphi中保存文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20772372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com