这几个存储过程怎么写啊.
1.TABLE1 的触发器中的校验
CREATE TABLE1(
Id char(20) NOT NULL,
商品id char(10) NULL,
商品组ID char(10) NULL,
.............
lock_dt datetime NOT NULL
)
go
/*
我想表达,在插入时候, 商品ID和商品组ID同时不为空的时候做检查
商品必须是属于这个商品组的.要满足这个关系,我下面的写法对不
*/
if
update(商品id ) or
update(商品组ID)
begin
select @nullcnt = 0
select @validcnt = count(*)
from inserted, 商品组关系表 //在商品关系表中查,该商品是不是这个商品组的ID
where
inserted.商品id = 商品组关系表.商品id and
inserted.商品组ID= 商品组关系表.商品组ID
select @nullcnt = count(*) from inserted where//都不为空
inserted.商品id not null and
inserted.商品组ID is not null
if @validcnt + @nullcnt != @numrows
begin
select @errno = 80002,
@errmsg = '不能插入因为商品和所属商品关系组不匹配'
goto error
end
end
2 功能表ID字段定义,我想MY_FUNC 表的id字段定义为自增的 IDENTITY,
可我另外一个表 AUDIT_MY_FUNC(MY_FUNC变更时记录变更信息的表) 也有一个自增字段id,
我可以同时在AUDIT_MY_FUNC有两个IDENTITY吗.
CREATE TABLE MY_FUNC (
sp_fun_id numeric(12,0) IDENTITY,// 这样可以吗?
sp_name char(200) NOT NULL,
trade_type_ind char(1) NOT NULL,
rule_name char(25) NULL,
rule_description char(200) NULL,
status char(1) NOT NULL,
lock_dt datetime NOT NULL
)
go
CREATE TABLE AUDIT_MY_FUNC (//记录
id numeric(12,0) IDENTITY,// 这样可以吗?
modify_dt datetime NOT NULL,
audit_type_ind char(1) NOT NULL,
user_name varchar(30)NOT NULL,
sp_fun_id numeric(12,0) IDENTITY, // 这样可以吗?
status char(1) NOT NULL,
lock_dt datetime NOT NULL
)
LOCK DATAROWS
go
3 如何写存储过程从MY_FUNC 返回一个结果集
CREATE TABLE MY_FUNC (
sp_fun_id numeric(12,0) IDENTITY,// funtion 功能ID
sp_name char(200) NOT NULL, //function对应的 存储过程名字
trade_type_ind char(1) NOT NULL, //交易类型 A B C
rule_name char(25) NULL,
rule_description char(200) NULL,
status char(1) NOT NULL, //ACITVE/INACTIVE.
lock_dt datetime NOT NULL
)
我想有一个存储过程 sp_get_funs返回指定交易类型A的全部功能.
4 检验交易的规则存储过程 sp_check_with_funs 和 sp_check_a 怎么写
CREATE TABLE 交易记录表(
hdr_num int NOT NULL, 交易记录号
trade_type_ind char(1) NOT NULL, 交易类型 A B C
xml_text text NOT NULL, 交易类容
lock_dt datetime NOT NULL
)
go
/记录某一种商品交易的规则, 根据交易的商品或者商品的组,产地,类型来执行不同的格式合同/
CREATE 交易规则表 (
ID char(20) NOT NULL,
商品ID char(10) NULL,
商品组ID char(10) NULL,
商品产地ID char(10) NULL,
trade_type_ind char(1) NOT NULL, 交易类型 A B C
运送方式 char(1) NULL,
格式合同条款ID char(10) NOT NULL,
lock_dt datetime NOT NULL
)
我从第三步得到了要做的function列表,function_recordset.
遍历其中的每一个function,然后调用指定sp_name (如 funcation_a, sp_check_a),
我想让sp_check_a去交易记录表中读取一条交易记录, 然后去交易规则表中找对该条记录进行
分析匹配,找到一条适合的规则(找到第一个适合的就可以跳出匹配规则,不再匹配了),并返回这个规则(格式合同条款ID)
这块应该怎么写啊.