-- ============================================================
-- 服务方法管理数据表建表脚本(Oracle)
-- 数据来源:服务方法管理数据表.docx
-- 注意:原文档中参数表名为 SRCPARAMS,已按最新要求改为 SRCMETHODPARAMS
-- ============================================================
-- 1. 服务模块表:记录被扫描 DLL 中的类(AjaxMethod 方法所在的类)
CREATE TABLE SRCMD (
MACID CHAR(20) NOT NULL, -- 服务部件ID(程序集名称)
MDID FLOAT NOT NULL, -- 服务模块号(类序号)
MDNAME CHAR(40) NULL, -- 服务模块名称(类全名)
CONSTRAINT PK_SRCMD PRIMARY KEY (MACID, MDID)
);
COMMENT ON TABLE SRCMD IS '代码扫描服务模块';
COMMENT ON COLUMN SRCMD.MACID IS '服务部件ID';
COMMENT ON COLUMN SRCMD.MDID IS '服务模块号';
COMMENT ON COLUMN SRCMD.MDNAME IS '服务模块名称';
-- 2. 服务方法表:记录类中标记了 AjaxMethod 的方法
CREATE TABLE SRCMETHOD (
MACID CHAR(20) NOT NULL, -- 服务部件ID
MDID FLOAT NOT NULL, -- 服务模块号
METHODNAME CHAR(32) NOT NULL, -- 服务方法名
MODIFIERS VARCHAR2(80) NULL, -- 方法修饰符(例如 public static)
AUTHREQUIRED CHAR(1) NULL, -- 是否需要登录才能调用(Y/N)
USEHTTPGET CHAR(1) NULL, -- 是否支持 Http GET 调用(Y/N)
METHODDESC VARCHAR2(4000) NULL, -- 服务方法功能描述()
RETTYPE VARCHAR2(80) NULL, -- 返回值类型(包含命名空间)
RETDESC VARCHAR2(1000) NULL, -- 返回值描述()
CONSTRAINT PK_SRCMETHOD PRIMARY KEY (MACID, MDID, METHODNAME)
);
COMMENT ON TABLE SRCMETHOD IS '代码扫描服务方法';
COMMENT ON COLUMN SRCMETHOD.MACID IS '服务部件ID';
COMMENT ON COLUMN SRCMETHOD.MDID IS '服务模块号';
COMMENT ON COLUMN SRCMETHOD.METHODNAME IS '服务方法名';
COMMENT ON COLUMN SRCMETHOD.MODIFIERS IS '方法修饰符';
COMMENT ON COLUMN SRCMETHOD.AUTHREQUIRED IS '是否需要登录才能调用';
COMMENT ON COLUMN SRCMETHOD.USEHTTPGET IS '是否支持Http GET调用';
COMMENT ON COLUMN SRCMETHOD.METHODDESC IS '方法功能描述';
COMMENT ON COLUMN SRCMETHOD.RETTYPE IS '返回值类型';
COMMENT ON COLUMN SRCMETHOD.RETDESC IS '返回值描述';
-- 3. 服务方法参数表:记录每个方法的参数
CREATE TABLE SRCMETHODPARAMS (
MACID CHAR(20) NOT NULL, -- 服务部件ID
MDID FLOAT NOT NULL, -- 服务模块号
METHODNAME CHAR(32) NOT NULL, -- 服务方法名
PARAMXH FLOAT NOT NULL, -- 参数序号
PARAMNAME CHAR(32) NULL, -- 参数名
PARAMTYPE VARCHAR2(80) NULL, -- 参数类型(包含命名空间)
PARAMDESC VARCHAR2(1000) NULL, -- 参数描述()
CONSTRAINT PK_SRCMETHODPARAMS PRIMARY KEY (MACID, MDID, METHODNAME, PARAMXH)
);
COMMENT ON TABLE SRCMETHODPARAMS IS '代码扫描服务方法参数';
COMMENT ON COLUMN SRCMETHODPARAMS.MACID IS '服务部件ID';
COMMENT ON COLUMN SRCMETHODPARAMS.MDID IS '服务模块号';
COMMENT ON COLUMN SRCMETHODPARAMS.METHODNAME IS '服务方法名';
COMMENT ON COLUMN SRCMETHODPARAMS.PARAMXH IS '参数序号';
COMMENT ON COLUMN SRCMETHODPARAMS.PARAMNAME IS '参数名';
COMMENT ON COLUMN SRCMETHODPARAMS.PARAMTYPE IS '参数类型';
COMMENT ON COLUMN SRCMETHODPARAMS.PARAMDESC IS '参数描述';
-- 4. 数据类型表:记录自定义类型(参数/返回值中用到的自定义类)
CREATE TABLE SRCTYPE (
TYPEFULLNAME VARCHAR2(80) NOT NULL, -- 类型全称,例如 GThinking.S_XSDD.SOXXData
NAMESPACE VARCHAR2(80) NULL, -- 命名空间
TYPENAME VARCHAR2(80) NULL, -- 显示名称,例如 SOXXData
TYPEDESC VARCHAR2(1000) NULL, -- 类型描述()
CONSTRAINT PK_SRCTYPE PRIMARY KEY (TYPEFULLNAME)
);
COMMENT ON TABLE SRCTYPE IS '代码扫描数据类型';
COMMENT ON COLUMN SRCTYPE.TYPEFULLNAME IS '类型全称';
COMMENT ON COLUMN SRCTYPE.NAMESPACE IS '命名空间';
COMMENT ON COLUMN SRCTYPE.TYPENAME IS '显示名称';
COMMENT ON COLUMN SRCTYPE.TYPEDESC IS '类型描述';
-- 5. 数据类型属性表:记录自定义类型的公共属性/字段
CREATE TABLE SRCPROP (
TYPEFULLNAME VARCHAR2(80) NOT NULL, -- 类型全称
PROPNAME CHAR(32) NOT NULL, -- 属性名称
PROPTYPEFULLNAME VARCHAR2(80) NOT NULL, -- 属性类型全称
NAMESPACE VARCHAR2(80) NULL, -- 属性类型命名空间
PROPTYPE VARCHAR2(80) NULL, -- 属性类型显示名称
PROPDESC VARCHAR2(250) NULL, -- 属性描述()
CONSTRAINT PK_SRCPROP PRIMARY KEY (TYPEFULLNAME, PROPNAME, PROPTYPEFULLNAME)
);
COMMENT ON TABLE SRCPROP IS '代码扫描数据类型属性';
COMMENT ON COLUMN SRCPROP.TYPEFULLNAME IS '类型全称';
COMMENT ON COLUMN SRCPROP.PROPNAME IS '属性名称';
COMMENT ON COLUMN SRCPROP.PROPTYPEFULLNAME IS '属性类型全称';
COMMENT ON COLUMN SRCPROP.NAMESPACE IS '属性类型命名空间';
COMMENT ON COLUMN SRCPROP.PROPTYPE IS '属性类型';
COMMENT ON COLUMN SRCPROP.PROPDESC IS '属性描述';
-- 可选索引:加速按 MACID 查询
CREATE INDEX IDX_SRCMETHOD_MACID ON SRCMETHOD(MACID);
CREATE INDEX IDX_SRCMETHODPARAMS_MACID ON SRCMETHODPARAMS(MACID);
CREATE INDEX IDX_SRCPROP_TYPEFULLNAME ON SRCPROP(TYPEFULLNAME);