Oracle Delphi中的存储过程文本保存

Oracle Delphi中的存储过程文本保存,oracle,delphi,delphi-7,delphi-2010,bde,Oracle,Delphi,Delphi 7,Delphi 2010,Bde,我需要使用TQuery从delphi将存储过程创建到oracle中。 但是SQL.text很难理解。 有没有办法将直接文本存储为不带引号的pl/SQL 'create or replace '+ 'function WholeTableRecovery(i_tablname IN varchar) return varchar '+ 'as '+ 是否可以使用资源文件 提前感谢因为您在标签中使用了Delphi 2010(我这里没有要测试的Delphi 7),所以一种舒适的方法是将SQL存储在单

我需要使用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的资源,则无需直接调用:

{$R 'MySQLResources.res' 'resources\MySQLResources.rc'}
为了方便起见,您可以包装TResourceStream的用法,示例中所示的方法是使用字符串,您也可以直接使用流,如TLama
MyQuery.SQL.LoadFromStream(rs)所述

使用类似于
CallOneSql(MyQuery,'My_First_Speaking_ResourceName')的调用


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

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

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

My_First_Speaking_ResourceName RCDATA "MyFirstSQL.sql"
My_Second_Speaking_ResourceName RCDATA "MySecondSQL.sql"
如果包含包含RC和结果RES的资源,则无需直接调用:

{$R 'MySQLResources.res' 'resources\MySQLResources.rc'}
为了方便起见,您可以包装TResourceStream的用法,示例中所示的方法是使用字符串,您也可以直接使用流,如TLama
MyQuery.SQL.LoadFromStream(rs)所述

使用类似于
CallOneSql(MyQuery,'My_First_Speaking_ResourceName')的调用


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

例如,您可以将其作为表单上
TMemo
的内容,然后在运行时将其隐藏,并从中读取文本。还有第三方非可视组件包含DFM中的文本。PS:对于不同的Delphi版本,使用资源文件,您必须正确地将文本保存为UTF-16或非Unicode。这是可能的,但令人讨厌。您真正的Delphi版本是什么?您试图实现什么?问题到底是什么?附言:如今BDE真的非常不受欢迎。一定要考虑切换到某个直接库!使用TQuery.SQL.Text您究竟不能理解什么?它已经为您存储了。你真正的问题是什么?当然有办法。
SQL
属性是一个普通的
TStrings
子体,因此将SQL查询存储为文本资源,并对
TResourceStream
使用
TQuery.SQL.LoadFromStream
方法,在该方法中,您将使用查询加载资源。例如,您可以将其作为
TMemo
的内容放在表单上,然后在运行时将其隐藏,并从中读取文本。还有第三方非可视组件包含DFM中的文本。PS:对于不同的Delphi版本,使用资源文件,您必须正确地将文本保存为UTF-16或非Unicode。这是可能的,但令人讨厌。您真正的Delphi版本是什么?您试图实现什么?问题到底是什么?附言:如今BDE真的非常不受欢迎。一定要考虑切换到某个直接库!使用TQuery.SQL.Text您究竟不能理解什么?它已经为您存储了。你真正的问题是什么?当然有办法。
SQL
属性是一个普通的
TStrings
子体,因此,将您的SQL查询存储为文本资源,并使用
TQuery.SQL.LoadFromStream
方法对
TResourceStream
加载查询资源。无需调用BRCC32。Delphi 2010 IDE是否有菜单选项将文件包括到资源(如XE2的项目/资源和图像)中?虽然感谢$R的二进制语法,但我并没有听说过这个,更好的版本control@Arioch'是D2010已经支持
{$R*.dres}
。很好,你可以把它作为自己的答案。我已经习惯了这种方式,因为我的一些模板和标准单元已经使用了独立于项目的资源。在尝试将前Unicode DUnit移植到XE2并在RC文本中遇到大量ansi/wide问题之后,我对直接在RC中使用文本非常谨慎。您只需将它们放到表单或数据模块中即可。特别是如果D2010和D7都要共存,则无需调用BRCC32 Delphi 2010 IDE是否有菜单选项将文件包含到资源(如XE2的项目/资源和图像)中?虽然感谢$R的二进制语法,但我并没有听说过这个,更好的版本control@Arioch'是D2010已经支持
{$R*.dres}
。很好,你可以把它作为自己的答案。我已经习惯了这种方式,因为我的一些模板和标准单元已经使用了独立于项目的资源。在尝试将前Unicode DUnit移植到XE2并在RC文本中遇到大量ansi/wide问题之后,我对直接在RC中使用文本非常谨慎。您只需将它们放到表单或数据模块中即可。特别是如果D2010和D7同时存在