[码海拾贝 之TC] 使用View 定义动态的Class

前言

在TC 中,

Persistent Class 和 Table 是对应的关系。

定义一个Persistent的Class , updatedb 的时候就会产生对应的table.

在TC 的开发环境中, 使用一个username . 对应的会在这个username 下产生一个table

在正式环境中, 因为使用到 adm, su ,可key 三个username, 所以在这三个username 下都会生成相应的table.

具体数据保存在哪一张table 中, 就看Class 的定义是继承自哪(如果继承自admin的话, 自然就保存在admin 对应的username下)

之后使用QueryDbObject 对Class 进行查询。

查询的时候可以设置一个Scope 的参数

SC_SCOPE_OF_SESSION                         -- 在当前user 对应的table 中查询(基本上是su)
SC_SCOPE_WHERE_NECESSARY        -- 在所有user 对应的table 中查询

除了QueryDbobject 的方式外, TC 还提供了 QueryDbView 的方式Query View 中的数据。

这个View 不需要对应到一个Persistent 的Class, 而是一个View 就可以了。

那么, 这种开发如何进行呢? 要注意什么状况呢?

Query View

1. 首先, 定义 db view

CREATE OR REPLACE FORCE VIEW "VTEST" AS
SELECT
	ATT AS ATT,                                                                                                                                                                                        

	‘-‘ AS CreationDate ,
	‘-‘ AS CurDbName ,
	‘-‘ AS LastUpdate ,
	‘-‘ AS OBID ,
	NULL AS Recycled ,
	NULL AS SEIndexLanguageList ,
	NULL AS ZBlob ,
	‘VTEST‘ AS Class
FROM
View SQL;

这里的ATT代笔需要定义的一个attribute
这里注意的是, 处理定义需要的attribute 外, 还需要定义一些系统使用的attribute

2. 其次, 定义动态的class

define dynamic class VTEST with parent PdmRoot;
{
     attach ATT;
}

3. 定义好之后, View 里面有数据了。就可以使用QueryDbView的方式进行数据查找了。

在正式环境中,

1. 如果创建View 的SQL 在三个db 中都有执行的话, 使用  SC_SCOPE_WHERE_NECESSARY 这个scope 进行query ,

数据就会重复(三笔)

2.如果创建View 的SQL 只在su db 中有执行的话,使用  SC_SCOPE_WHERE_NECESSARY 这个scope 进行query, 就会报找不到table 的错误。

所以好的方式是 ,在su db 中创建view , 使用 SC_SCOPE_OF_SESSION 进行query

时间: 2024-10-17 18:50:34

[码海拾贝 之TC] 使用View 定义动态的Class的相关文章

[码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在

前言 检索一个字符串是否存在于一个数组中, 最基本的想法应该就是对数组进行循环, 逐个判断数组的每个元素值和给定的值是否相等. (在Java语言还可以把数组转成 List , 在 list 中直接有 contains 方法可以使用) 看一段简单的代码: my @arr2 = qw(str1 str2 str3 str4); foreach(@arr2) { if($_ eq "str2") { print "str2 exist in Array!\n"; last

[码海拾贝 之Perl]获取日期以及日期的加减

前言 在Perl 中, 不安装其他模组的状况下, 可以使用 localtime 来获取当地日期和时间. 在标量上下文中, 返回的是字符串格式. my $localtime = localtime(); print "\n$localtime\n"; 返回: Thu Jan  1 18:17:56 2015 在列表上下文中, 返回的是描述当前时间的一个元素列表 my ($sec,$min,$hour,$mday,$mon,$year_off,$wday,$yday,$isdat) = l

[码海拾贝 之JS] JS 之删除数组中的元素

前言 在Java 中要从一个list 中删除一个元素, 直接使用 remove 方法就可以了. 在js 中的array 并没有 remove 方法, 但是在js 中array 有splice 方法可以达成相同的效果, 除此之外, 还可以使用其他方式来实现这个效果. 使用splice 方法实现从数组中删除元素 首先看一下 splice 方法如何使用. 语法 arrayObject.splice(index,howmany,item1,.....,itemX) 参数 描述 index 必需.整数,规

【谜海拾贝群】2017年3月25日群友合擂谜会题

[谜海拾贝群]2017年3月25日群友合擂谜会题 人心3条1.眉月斜钩,星横北斗(13笔字)戥北斗象形丶2.河边有几座桥(字)沉3.一扫码,加个人(11笔字)鸽逗号入谜 巽离3条1.言而无信者,大多吞下前言,尽留后语 (三字谜目) 奢侈品2.马孟起独来犯边 (古生物) 猛犸3.枪归仓,尤未晚,一夕白首,放马西凉 (明人)冯梦龙 蓝色彼岸4条1.勒令全家都出接 穴位三 蕉心 命门人中人迎 2. 人生七十古来稀 四字俗语 男女老少 3. 孤帆一片日边来 袁去华词一句 天际归舟 4. 皆非主力部队 成

[Go语言]从Docker源码学习Go——结构和函数的定义

Docker在最近很火,而作为Docker的开发语言-Go也再次被大家提到. 已经使用Docker一段时间了,但是对于源码,尤其是其开发语言Go却一直是一知半解. 最近准备利用空余时间从Docker源代码入手来学习一下Go,同时对Docker的实现也希望可以提高一个层次. 有兴趣的可以一起讨论,学习. 准备工作: 1. Docker源代码https://github.com/docker/docker (版本1.1.2) 2. 安装开发工具LiteIDE, 这个是官方的Go语言的IDE 3. G

科学计算三维可视化---TraitsUI(View定义界面)

View定义界面 使用View来自定义界面 class ModelManager(HasTraits): model_name = Str category = Str model_file = Str model_number = Int view = View( Item("model_name", label=u"模型名称"), #将Traits属性和Item关联起来,分别定义标签,中文需要使用u Item("model_file", la

【谜海拾贝群】2017年3月17日一生平安主擂谜会题

[谜海拾贝群]2017年3月17日一生平安主擂谜会题 1.一日为夫情爱生(九笔字)春2.不应有恨民动荡(四字医学词)无痛[人]流3.妄言意见请整改(十一笔字)望4.先前跟随贤内助(四字行程用语,含山西省地名)从太原来5.意思不要装十本(七笔字)杜6.白天离后月相伴(二字医学名词)失明7.景山之中月依依(七笔字)甫8.先睹为快(二字谦词)见笑9.宝园拆迁已完了(八笔字)国10.价钱一分都别涨(成语一)文不加点11.坡田硬要开田埂(十笔字)破12.但抛里头好味尽(二字歌曲名)九妹13.传言删除仙人来

CREATE VIEW - 定义一个视图

SYNOPSIS CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query DESCRIPTION 描述 CREATE VIEW 定义一个查询的视图. 这个视图不是物理上实际存在(于磁盘)的.具体的说,自动生成一个改写索引规则(一个 ON SELECT 规则)的查询用以支持在视图上的检索. CREATE OR REPLACE VIEW 类似,不过是如果一个同名的视图已经存在,那么就替换它. 你只能用一个生成相同字段的

C#定义动态数组(泛型)

C#代码中定义动态数组的时候,是很有讲究的.我们通常不知道我们需要多大空间,而且在数据之间的转化也是一个问题. 问题一: GUID类型无法转换为GUID[] 解答: 我们尝试的时候一般用的是数组: <span style="font-size:18px;"> Guid[] staff = new Guid[] { settingEvaluationBLL.LoadEnities(s => s.YzStaffEntityEvaluaterID.ID == Evaluat