idl 程序中用户idl定义数组程序不好用怎么办

过程、触发器、用户定义函数和批处理中使用的 EXECUTE IMMEDIATE
过程、触发器、用户定义函数和批处理中使用的 EXECUTE IMMEDIATE
EXECUTE IMMEDIATE 语句允许使用文字字符串(在引号中)和变量的组合来构建语句。例如,以下过程包含创建表的 EXECUTE IMMEDIATE 语句。
CREATE PROCEDURE CreateTableProcedure(
IN tablename CHAR(128) )
EXECUTE IMMEDIATE 'CREATE TABLE '
|| tablename
|| '( column1 INT PRIMARY KEY )'
EXECUTE IMMEDIATE 语句可以与返回结果集的查询一起使用。您可将 WITH RESULT SET ON 子句与 EXECUTE IMMEDIATE 语句配合使用,以指示语句返回结果集—缺省行为是语句不返回结果集。指定 WITH RESULT
SET ON 或 WITH RESULT SET OFF 同时影响创建过程时和执行过程时所发生的事件。
请考虑以下过程:
CREATE OR REPLACE PROCEDURE test_result_clause()
EXECUTE IMMEDIATE WITH RESULT SET OFF 'SELECT 1';
当过程定义中不包括 RESULT SET 子句时,数据库服务器将试图确定过程是否生成结果集。在此处,EXECUTE IMMEDIATE 语句指定不生成结果集。因此,数据库服务器定义的过程没有结果集列,并且此过程的 SYSPROCPARM 系统视图中也没有任何行。对此过程的
CALL 执行 DESCRIBE 将不会返回任何结果列。如果嵌入式 SQL 应用程序使用该信息来决定是否要打开游标或执行语句,则其会执行语句,然后返回错误。
作为第二个示例,请考虑上述过程的修改版本:
CREATE OR REPLACE PROCEDURE test_result_clause()
EXECUTE IMMEDIATE WITH RESULT SET ON 'SELECT 1';
在此处,WITH RESULT SET ON 子句将致使此过程的 SYSPROCPARM 系统视图中存在一个行。数据库服务器不知道结果集的外观—因为过程正在使用 EXECUTE IMMEDIATE—但其知道过程将返回结果集,所以数据库服务器在
SYSPROCPARM 中定义一个虚设的结果集列来表示过程的结果集(其名称为 "expression",类型为 SMALLINT)。请注意,仅创建一个虚设的结果集列;使用 EXECUTE IMMEDIATE 语句时,服务器无法确定各结果集的列的数目和类型。因此,请考虑以下稍做修改的示例:
CREATE OR REPLACE PROCEDURE test_result_clause()
EXECUTE IMMEDIATE WITH RESULT SET ON 'SELECT 1, 2, 3';
在此,虽然 SELECT 会返回含有三个列的结果集,但服务器仍然仅在 SYSPROCPARM 系统视图中放置一行。因此,以下查询
SELECT * FROM test_result_clause();
失败并生成 SQLCODE -866,因为运行时的结果集特性与 SYSPROCPARM 中的占位符结果不匹配。
要执行上述查询,您可以显式指定结果集列的名称和类型,如下所示:
SELECT * FROM test_result_clause() WITH (x INTEGER, y INTEGER, z INTEGER);
在执行时,如果指定 WITH RESULT SET ON,数据库服务器处理返回结果集的 EXECUTE IMMEDIATE 语句。但是,如果指定 WITH RESULT SET OFF 或省略该子句,则数据库服务器仍会在已分析的字符串参数中查看第一个语句的类型。如果该语句是 SELECT 语句,则其会返回结果集。因此,在上面的第二个示例中:
CREATE OR REPLACE PROCEDURE test_result_clause()
EXECUTE IMMEDIATE WITH RESULT SET OFF 'SELECT 1';
从 Interactive SQL 中可以成功地调用此过程。但是,如果更改此过程以使其包含批处理,而不是仅包含一个 SELECT 语句:
CREATE OR REPLACE PROCEDURE test_result_clause()
EXECUTE IMMEDIATE WITH RESULT SET OFF
' set v=1; end';
则对 test_result_clause 过程的 CALL 将会返回错误(SQLCODE -946、SQLSTATE 09W03)。
最后一个示例说明您如何将 SELECT 语句构造为某个过程中的 EXECUTE IMMEDIATE 语句的参数,并使该过程返回结果集。
CREATE PROCEDURE DynamicResult(
IN Columns LONG VARCHAR,
IN TableName CHAR(128),
IN Restriction LONG VARCHAR DEFAULT NULL )
DECLARE Command LONG VARCHAR;
SET Command = 'SELECT ' || Columns || ' FROM ' || TableN
IF ISNULL( Restriction,'') && '' THEN
SET Command = Command || ' WHERE ' || R
EXECUTE IMMEDIATE WITH RESULT SET ON C
如果按如下方式调用该过程:
CALL DynamicResult(
'table_id,table_name',
'table_id &= 10');
它将生成以下结果:
上述 CALL 将正确返回结果集,即使过程利用 EXECUTE IMMEDIATE 也是如此。一些服务器 API(例如 ODBC)将请求与 PREPARE-DESCRIBE-EXECUTE-OR-OPEN 结合使用,从而根据其是否返回结果集来决定是执行语句还是打开语句。如果打开语句,API
或应用程序可随即发出 DESCRIBE CURSOR 来确定实际结果集的外观,而不是依赖于创建过程时 SYSPROCPARM 系统视图的内容。DBISQL 和 DBISQLC 均使用此技术。在上述情况下,对以上过程的 CALL 将会正确执行。但是,依赖于语句的
DESCRIBE 结果的应用程序接口将无法处理任意语句。
在原子复合语句中,不能使用导致 COMMIT(提交)的 EXECUTE IMMEDIATE 语句,因为在该上下文中不允许 COMMIT。TAO下IDL结构定义编译文件分析
ZDNet软件频道 时间: 作者:小旋子 | CSDN 
本文关键词:
每个IDL的定义的结构经过TAOIDL编译器编译将生成一些结构编码的函数的定义。主要分为TypeCode的处理函数和Any的处理函及其CDR编码的处理。
IDLTAOIDLTypeodeAnyAnyTypedodeAnyTAOTAO::Any_Dual_Impl_T
&&& strut AlarmInfo {
&&&&&&& GeneralizedTime&&&&& &&&eventT
&&&&&&& ObjetInstane&&&&&&&&&
&&&&&&& Objetlass&&&&&&&&&&&&
&&&&&&& NotifiationIdentifier& notifiationId;
&&&&&&& orrelatedNotifiations alarmInfoorrelatedN
&&&&&&& Probableause&&&&&&&&&& alarmInfoP
&&&&&&& SpeifiProblems&&&&&&& alarmInfoSpeifiP
&&&&&&& PereivedSeverity&&&&&& alarmInfoPereivedS
&&&&&&& boolean&&&&&&&&&&&&&&&& bakedUpS
&&&&&&& ObjetInstane&&&&&&&&& bakUpO
&&&&&&& TrendIndiation&&&&&& &&alarmInfoTrendI
&&&&&&& ThresholdInfo&&&&&&&&&& alarmInfoThresholdI
&&&&&&& AttributehangeList&&&& statehangeD
&&&&&&& AttributeList&&&&&&&&&& monitoredA
&&&&&&& ProposedRepairAtions&& alarmInfoProposedRepairA
&&&&&&& AdditionalString& &&&&&&&& additionalT
&&&&&&& AdditionalInformation&& additionalI
&&& };&&&&&&&
& strut& AlarmInfo
&&& typedef AlarmInfo_var _var_
&&& stati void _tao_any_destrutor (void *);
&&& TAO_String_Manager eventT
&&& nms::ObjetI
&&& nms::O
&&& nms::NotifiationIdentifier notifiationId;
&&& nms::orrelatedNotifiations alarmInfoorrelatedN
&&& nms::Probableause alarmInfoP
&&& nms::SpeifiProblems alarmInfoSpeifiP
&&& nms::PereivedSeverity alarmInfoPereivedS
&&& ORBA::Boolean bakedUpS
&&& nms::ObjetInstane bakUpO
&&& nms::TrendIndiation alarmInfoTrendI
&&& nms::ThresholdInfo alarmInfoThresholdI
&&& nms::AttributehangeList statehangeD
&&& nms::AttributeList monitoredA
& &&nms::ProposedRepairAtions alarmInfoProposedRepairA
&&& TAO_String_Manager additionalT
&&& nms::AdditionalInformation additionalI
&O1 AlarmInfo
nms::AlarmInfo::_tao_any_destrutor (
&&& void *_tao_void_pointer
& AlarmInfo *_tao_tmp_pointer =
&&& AE_stati_ast (AlarmInfo *, _tao_void_pointer);
& delete _tao_tmp_
PPTypdeode
stati ORBA::Typeode _t_TAO_t_nms_AlarmInfo (
&&& ORBA::tk_strut,
&&& sizeof (_o_nms_AlarmInfo),
&&& (har *) &_o_nms_AlarmInfo,
&&& sizeof (nms::AlarmInfo)
namespae nms
& ::ORBA::Typeode_ptr _t_AlarmInfo =
&&& &_t_TAO_t_nms_AlarmI
&O2 AlarmInfo Any
nms::AlarmInfo::_tao_any_destrutor (
&&& void *_tao_void_pointer
& AlarmInfo *_tao_tmp_pointer =
&&& AE_stati_ast (AlarmInfo *, _tao_void_pointer);
& delete _tao_tmp_
&O3 AlarmInfoAny
void operator&&= (
&&& ORBA::Any &_tao_any,
&&& onst nms::AlarmInfo &_tao_elem
& TAO::Any_Dual_Impl_T&nms::AlarmInfo&::insert_opy (
&&&&& _tao_any,
&&&&& nms::AlarmInfo::_tao_any_destrutor,
&&&&& nms::_t_AlarmInfo,
&&&&& _tao_elem
&O4 AlarmInfoAny
// Extration to non-onst pointer (depreated).
ORBA::Boolean operator&&= (
&&& onst ORBA::Any &_tao_any,
&&& nms::AlarmInfo *&_tao_elem
& return _tao_any &&= AE_onst_ast (
&&&&& onst nms::AlarmInfo *&,
&&&&& _tao_elem
& TAO::Any_Dual_Impl_T&nms::AlarmInfo&::insert_opy (…)
Anyinsertextratvalue
& template&typename T&
& lass Any_Basi_Impl_T : publi Any_Impl
&&& Any_Basi_Impl_T (ORBA::Typeode_ptr,
&&&&&&&&&&&&&&&&&&&&& onst T & val);
&&& virtual ~Any_Basi_Impl_T (void);
&&& stati void insert (ORBA::Any &,
&&&&&&&&&&&&&&&&&&&&&&& ORBA::Typeode_ptr,
&&&&&&&&&&&&&&&&&&&&&&& onst T &);
&&& stati ORBA::Boolean extrat (onst ORBA::Any &,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ORBA::Typeode_ptr,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T &);
&&& virtual ORBA::Boolean marshal_value (TAO_OutputDR &);
&&& ORBA::Boolean demarshal_value (TAO_InputDR &);
&&& virtual void _tao_deode (TAO_InputDR &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&& AE_ENV_ARG_DEL_WITH_DEFAULTS);
&&& virtual onst void *value (void)
&&& stati Any_Basi_Impl_T&T& *reate_empty (ORBA::Typeode_ptr);
& private:
&&& T value_;
&OIDL*.iDRDR
void operator&&= (ORBA::Any &, onst nms::AlarmInfo &); // opying version
&void operator&&= (ORBA::Any &, nms::AlarmInfo*); // nonopying version
&ORBA::Boolean operator&&= (onst ORBA::Any &, nms::AlarmInfo *&); // depreated
&ORBA::Boolean operator&&= (onst ORBA::Any &, onst nms::AlarmInfo *&);
ORBA::Boolean operator&& (TAO_OutputDR &, onst nms::AlarmInfo &);
&ORBA::Boolean operator&& (TAO_InputDR &, nms::AlarmInfo &);
ORBA::Boolean operator&& (
&&& TAO_OutputDR &strm,
&&& onst nms::AlarmInfo &_tao_aggregate
&&& (strm && _tao_aggregate.eventTime.in ()) &&
&&& (strm && _tao_aggregate.soure) &&
&&& (strm && _tao_aggregate.sourelass) &&
&&& (strm && _tao_aggregate.notifiationId) &&
&&& (strm && _tao_aggregate.alarmInfoorrelatedNotifiations) &&
&&& (strm && _tao_aggregate.alarmInfoProbableause) &&
&&& (strm && _tao_aggregate.alarmInfoSpeifiProblems) &&
&&& (strm && _tao_aggregate.alarmInfoPereivedSeverity) &&
&&& (strm && ORBA::Any::from_boolean (_tao_aggregate.bakedUpStatus)) &&
&&& (strm && _tao_aggregate.bakUpObjet) &&
&&& (strm && _tao_aggregate.alarmInfoTrendIndiation) &&
&&& (strm && _tao_aggregate.alarmInfoThresholdInfo) &&
&&& (strm && _tao_aggregate.statehangeDefinition) &&
&&& (strm && _tao_aggregate.monitoredAttributes) &&
&&& (strm && _tao_aggregate.alarmInfoProposedRepairAtions) &&
&&& (strm && _tao_aggregate.additionalText.in ()) &&
&&& (strm && _tao_aggregate.additionalInfo);
IDLORBADRIDLIDL++ORBA++IDL++
上一篇:下一篇:
编译文件结构定义c++cLinux
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
最受关注的文章:
关键字: &&&&&&&&&& 关键字: &&&&&& 关键字: &&&&&&&& 关键字: && 关键字: &&&&
最新更新文章:
??????????
??????????
Copyright& 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备号-159京公网安备:基于OpenDDS的应用程序开发(1)IDL定义
基于的应用程序开发
接下来的几篇博文主要介绍一个应用程序的示例,演示如何基于
本文是第一篇,主要介绍
下面是一个定义
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。用户定义函数和子程序--《中国水利》1985年09期
用户定义函数和子程序
【摘要】:正 在 BASIC 语言中,除了由解释系统提供的标准函数外,还允许用户自己定义函数和编写子程序。在一个程序中,经常会遇到多次处理相同形式的问题。如果重复处理的内容是一个算术表达式时,可用用户定义函数来实现。如果重复处理的内容是复杂的计算公式或处理过程,有多个语句组成,用户定义函数无法实现,必须用子程序来实现。一、用户定义函数(DEF 和 FN)用户自己定义的函数,通常称为用户定义函数或自定
【关键词】:
【正文快照】:
在BASIC语言中,除了由解释系统提供的标准 函数外.还允许用户自己定义函数和编写子程序。在一个程 序中,经常会遇到多次处理相同形式的问题。如果重复处理 的内容是一个算术表达式时,可用用户定义函数来实现。如 果重复处理的内容是复杂的计算公式或处理过程,有多个 语句组成
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【相似文献】
中国期刊全文数据库
李呈龙;;[J];武钢技术;1980年02期
张棠棣;;[J];化工自动化及仪表;1981年08期
袁权;[J];化工进展;1983年03期
沈利生;[J];计算机研究与发展;1983年09期
崔春芳;;[J];测绘信息与工程;1983年03期
袁宗轩;[J];微计算机应用;1984年03期
;[J];电子技术;1984年01期
宋淑荣;[J];计算机工程与设计;1985年02期
,王庆苏;[J];航天控制;1985年01期
陈朝辉;;[J];中国水利;1985年09期
中国重要会议论文全文数据库
马成林;马恩舜;;[A];第六届空间结构学术会议论文集[C];1996年
吕昶;薛元德;沈碧霞;;[A];第十二届玻璃钢/复合材料学术年会论文集[C];1997年
林平澜;王仁华;;[A];第二届全国人机语音通讯学术会议论文集[C];1992年
雷广玉;;[A];中国工程物理研究院科技年报(2002)[C];2002年
吴倩芸;舒宣武;;[A];计算机技术在工程建设中的应用——第十二届全国工程建设计算机应用学术会议论文集[C];2004年
梁勇;许淑艳;;[A];2004全国荷电粒子源、粒子束学术会议论文集[C];2004年
郝长春;;[A];江苏省计量测试学会2005年论文集[C];2005年
余斌;史亮;钱巨;;[A];中国造船工程学会电子技术学术委员会2006学术年会论文集(上册)[C];2006年
中国重要报纸全文数据库
本立;[N];电子报;2000年
黄少雄;[N];电子报;2004年
肖松;[N];电子报;2004年
彭树林;[N];电子报;2005年
耿德根;[N];电子报;2006年
耿德根;[N];电子报;2007年
刘晓光;[N];电脑报;2007年
陈杰;[N];电子报;2008年
耿德根;[N];电子报;2008年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
同方知网数字出版技术股份有限公司
订购热线:400-819-82499
在线咨询:
传真:010-
京公网安备74号

我要回帖

更多关于 心情不好压抑怎么办 的文章

 

随机推荐