[天堂隔壁]:您好:在新版本中的"系统选项设置"中"存储过程"的在我们这个平台系统中具体的概念是什么? 能否给我个在应用方面的实例配合说明此功能的使用.谢谢[emb8]
——————————————————————————————————
[admin]:这个存储过程在系统启动时执行,可以在这个存储过程里执行一些特殊的处理,比如根据登陆的用户不同设置不同的数据显示权限等。 [emb1]
——————————————————————————————————
[天堂隔壁]:可以,写一个实例程序给我参考一下吗?[emb8]
——————————————————————————————————
[admin]:这是一个根据登陆用户不同,更改几个节点显示内容的示例: go delete from 中间表 go insert into 中间表 select Users.科室 as 名称 from Users,SysOptions where SysOptions.CurUser=Users.Username go UPDATE Template, 中间表 SET Template.TableName = "SELECT * FROM 业务流程 WHERE 传递初审日期 is not null and 传递审核日期 is null AND 初审单位='"+[名称]+"'" WHERE (((Template.ID)=10)); go UPDATE Template,中间表 SET Template.TableName = "SELECT * FROM 业务流程 WHERE 传递审核日期 is not null and 传递审批日期 is null AND 审核单位='"+[名称]+"'" WHERE (((Template.ID)=11)); go UPDATE Template,中间表 SET Template.TableName = "SELECT * FROM 业务流程 WHERE 传递审批日期 is not null and 传递传出单位日期 is null AND 审批单位='"+[名称]+"'" WHERE (((Template.ID)=12)); go UPDATE Template,中间表 SET Template.TableName = "SELECT * FROM 业务流程 WHERE 传递传出单位日期 is not null and 传出日期 is null AND 传出单位='"+[名称]+"'" WHERE (((Template.ID)=21));
——————————————————————————————————
[天堂隔壁]:这个"存储过程"里使用的是什么语言啊? 那个实例的SQL我能看懂,语法是使用什么语言来实现?[emb8]
——————————————————————————————————
[admin]:就是SQL语句啊。
——————————————————————————————————
[天堂隔壁]:您的意思是指在"存储过程"这段程序中可以使用PL/SQL(事务SQL)吗? PL/SQL BLOCK SQL IF THEN SQL ELSE SQL END IF 这样的SQL语法吗? /高兴[emb5][emb8] [ALIGN=right][COLOR=#000066][本贴已被 天堂隔壁 于 2004-4-13 11:06:58 修改过][/COLOR][/ALIGN]
——————————————————————————————————
[admin]:不是。 对于网络应用而言,除了选项力的启动存储过程,其他任何地方都“支持事务SQL”的,除非服务器端SQL不支持,当前的常见大型数据库都支持的。 你可以在数据增强处理任何针对网络数据库的语句使用事务SQL,因为这语句是交给服务器端执行的。:)[emb1]
——————————————————————————————————
[天堂隔壁]:可是你给我的那段实例程序中的" go"的使用方式好像标准SQL程序中没有使用这样的结构方式啊?你那种使用方式是不是sqlserver中的ISQL支持的啊?我使用的是oracle数据库.我还是有些不明白在"存储过程"中应用方面,还有"存储过程"中支持使用的语法就是指后台数据库能够支持的SQL语句吗?呵呵,是不是我把"存储过程"这个功能跟程序的"存储过程"给自己搞混了.但是我感觉你的这个功能很使用,就是没有搞明白具体应用方面.多给我些各个有关实际应用方面的实例好吗?[emb8]
——————————————————————————————————
[admin]:你可以在针对服务器端发送的SQL语句中使用事务SQL,即你说的: PL/SQL BLOCK SQL IF THEN SQL ELSE SQL END IF 之类的,这个很久以前就支持了,你可以试试。[emb1][emb2]