|
|
CREATE OR REPLACE procedure Auto_Create_seach_Script(tablename in varchar2
,namespace in varchar2
,empnumber in varchar2
,userid in varchar2) is
/******************************************************************************
NAME: AutoCreateModelScript
version 1.0
description 自動產生ModelScript----
version 1.1
desctiption 表名和欄位名組織方式改變,輸出方式改變---
******************************************************************************/
cursor v_model is
select Get_table_model(a.table_name,'N','N') table_name
,a.column_name
,b.comments,c.COMMENTS table_comment
from user_tab_columns a
,user_col_comments b
,user_tab_comments c
where a.table_name=upper(tablename)
and a.table_name=b.table_name
and a.COLUMN_NAME=b.COLUMN_NAME
and a.TABLE_NAME=c.TABLE_NAME ;
v_construct1 varchar2(4000);
v_construct2 varchar2(4000);
v_cname varchar2(255);
v_tname varchar2(255);
v_attribute varchar2(4000);
IN_FILE UTL_FILE.FILE_TYPE;
V_FILE_NAME VARCHAR2(255);
V_PATH VARCHAR2(255);
v_column_name varchar2(255);
v_id_name varchar2(255);
BEGIN
V_PATH := 'TEMP_DIR';
for data in v_model loop
v_cname := data.table_comment;
v_tname := data.table_name;
exit when 1=1;
end loop;
v_file_name := v_tname||'DAL.cs';
IN_FILE := UTL_FILE.FOPEN(V_PATH,V_FILE_NAME,'W',24080);
UTL_FILE.put_line(IN_FILE,'/* ');
UTL_FILE.put_line(IN_FILE,' * Copyright (C) 2007 版權所有');
UTL_FILE.put_line(IN_FILE,' * ');
for data in v_model loop
UTL_FILE.put_line(IN_FILE,' * 檔案名:'||data.table_name||'Model.cs');
UTL_FILE.put_line(IN_FILE,' * 檔功能描述:'||data.table_comment);
UTL_FILE.put_line(IN_FILE,' * ');
UTL_FILE.put_line(IN_FILE,' * 版本:1.0 ');
UTL_FILE.put_line(IN_FILE,' * 創建標識:'||userid||' '||to_char(sysdate,'yyyymmdd'));
UTL_FILE.put_line(IN_FILE,' */ ');
UTL_FILE.put_line(IN_FILE,'using System;');
UTL_FILE.put_line(IN_FILE,'using System.Data;');
UTL_FILE.put_line(IN_FILE,'using System.Text;');
UTL_FILE.put_line(IN_FILE,'using System.Data.OracleClient;');
UTL_FILE.put_line(IN_FILE,'using System.Collections;');
UTL_FILE.put_line(IN_FILE,' ');
UTL_FILE.put_line(IN_FILE,'namespace Standard.DataAccess.'||namespace);
UTL_FILE.put_line(IN_FILE,'{');
UTL_FILE.put_line(IN_FILE,'/// <summary>');
UTL_FILE.put_line(IN_FILE,'/// '||data.table_comment);
UTL_FILE.put_line(IN_FILE,'/// </summary>');
UTL_FILE.put_line(IN_FILE,'public class '||v_tname||'DAL:BaseDAL ');
UTL_FILE.put_line(IN_FILE,'{ ');
exit when 1=1;
end loop;
v_construct1:='select ';
for data in v_model loop
v_construct1:=v_construct1|| data.column_name||',';
end loop;
v_construct1 :=substr(v_construct1,1,length(v_construct1)-1)||' FROM '|| tablename ||'_SV WHERE 1=1';
--utl_file.put_line(in_file,v_construct1);
UTL_FILE.PUT_LINE(IN_FILE,' private string sqlTxt;');
UTL_FILE.put_line(IN_FILE,' ');
UTL_FILE.put_line(IN_FILE,' /// <summary>');
UTL_FILE.put_line(IN_FILE,' /// 構造函數');
UTL_FILE.put_line(IN_FILE,' /// </summary>');
UTL_FILE.put_line(IN_FILE,' public '||v_tname||'DAL() ');
UTL_FILE.put_line(IN_FILE,' {');
UTL_FILE.put_line(IN_FILE,' sqlTxt = new StringBuilder("'||v_construct1||'").ToString();');
UTL_FILE.put_line(IN_FILE,' }');
UTL_FILE.put_line(IN_FILE,' ');
select Get_table_model(b.column_name,'Y'),b.column_name into v_id_name,v_column_name
from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME
and a.constraint_type='P'
AND A.TABLE_NAME=upper(tablename);
UTL_FILE.put_line(IN_FILE,' /// <summary>');
UTL_FILE.put_line(IN_FILE,' /// 根據'||v_cname||'PK值獲得單筆資料');
UTL_FILE.put_line(IN_FILE,' /// </summary>');
---v_id_name:=substr( v_tname,4,20)||'Id';
UTL_FILE.put_line(IN_FILE,' public '||v_tname||'Model'||' GetByPK(string '||v_id_name||')');
UTL_FILE.put_line(IN_FILE,' {');
UTL_file.put_line(in_file,' '||v_tname||'Model' || ' dataModel = new '||v_tname||'Model();');
utl_file.put_line(in_file,' return dataModel;');
UTL_FILE.put_line(IN_FILE,' }');
UTL_FILE.put_line(IN_FILE,' ');
if empnumber = '1' then
utl_file.put_line(in_file,' /// <summary> ');
utl_file.put_line(in_file,'/// 獲得'||v_cname||'所有資料 ');
utl_file.put_line(in_file,'/// </summary>');
utl_file.put_line(in_file,' public '||v_tname||'Collection '||'GetAll()');
utl_file.put_line(in_file,' {');
utl_file.put_line(in_file,' return GetAll("");');
utl_file.put_line(in_file,' }');
utl_file.put_line(in_file,' ');
end if;
UTL_FILE.put_line(IN_FILE,'}');
UTL_FILE.put_line(IN_FILE,' }');
UTL_FILE.put_line(IN_FILE,' ');
UTL_FILE.FCLOSE(IN_FILE);
END Auto_Create_seach_Script;
/
[ 本帖最后由 wanhualeng 于 2009-9-3 12:01 编辑 ] |
|