找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 2570|回复: 11

[资料] NCC常用实施工具SQL脚本

[复制链接]
发表于 2022-6-15 12:02:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
一、NCC扩展表字段长度。


1. 确保执行如下存储过程。如果,已经执行过,无需重复执行create or replace procedure expandFieldLength(tablename in varchar2,fieldname in  varchar2,newlength in int) is   vsql varchar2(4000);begin      dbms_output.put_line('tablename='||tablename||', fieldname='|| fieldname ||', newlength='|| newlength);        -- 更新元数据   update md_property set attrlength = newlength    where classid in (select id from md_class where name =tablename)   and name =fieldname;   -- 更新 MD_columen   update md_column set columnlength=newlength where tableid= tablename and name=fieldname;      -- 更新表结构   vsql := 'alter table '|| tablename || ' modify '|| fieldname  || ' varchar('|| newlength || ') ';   EXECUTE IMMEDIATE vsql;      --  自定义字段,还需要前端设置自定义属性设置。      commit;end expandFieldLength;2.  针对要扩展的表的字段,调用上面的存储过程 。针对哪个表,哪个字段,改多长,请在下面脚本参数中修改begin  expandfieldlength('so_saleorder','vdef1',400);end;3. 如果是自定义字段,还需要在ncc 自定义属性设置中,设置字段的长度。非自定义字段,不用管。
 楼主| 发表于 2022-8-29 09:46:13 | 显示全部楼层
本帖最后由 zhou66 于 2022-8-29 10:49 编辑
  1. -- 调整请购单特批说明字段vdef9长度为400;
  2. update md_property set attrlength = 400
  3.    where classid in (select id from md_class where defaulttablename ='po_praybill')
  4.    and name ='vdef9';

  5. update md_column set columnlength=400 where tableid= 'po_praybill' and name='vdef9';

  6. UPDATE bd_userdefitem set inputlength = 400 where pk_userdefrule = '1001Z810000000002CVP' and propindex =9;  
复制代码



//上面存储过程有些问题。按上面的语句执行快些。

//自定义字段,还需要前端自定义属性设置进行设置。
回复 点赞 1 拍砖 0

使用道具 举报

 楼主| 发表于 2022-6-15 12:04:21 | 显示全部楼层
本帖最后由 zhou66 于 2022-6-15 12:05 编辑
  1. 1. 确保执行如下存储过程。如果,已经执行过,无需重复执行
  2. create or replace procedure expandFieldLength(tablename in varchar2,fieldname in  varchar2,newlength in int)
  3. is
  4.    vsql varchar2(4000);

  5. begin
  6.    
  7.    dbms_output.put_line('tablename='||tablename||', fieldname='|| fieldname ||', newlength='|| newlength);  
  8.    
  9.    -- 更新元数据
  10.    update md_property set attrlength = newlength
  11.    where classid in (select id from md_class where name =tablename)
  12.    and name =fieldname;

  13.    -- 更新 MD_columen
  14.    update md_column set columnlength=newlength where tableid= tablename and name=fieldname;
  15.    
  16.    -- 更新表结构
  17.    vsql := 'alter table '|| tablename || ' modify '|| fieldname  || ' varchar('|| newlength || ') ';
  18.    EXECUTE IMMEDIATE vsql;
  19.    
  20.    --  自定义字段,还需要前端设置自定义属性设置。
  21.    
  22.    commit;

  23. end expandFieldLength;


  24. 2.  针对要扩展的表的字段,调用上面的存储过程 。针对哪个表,哪个字段,改多长,请在下面脚本参数中修改
  25. begin
  26.   expandfieldlength('so_saleorder','vdef1',400);
  27. end;

  28. 3. 如果是自定义字段,还需要在ncc 自定义属性设置中,设置字段的长度。非自定义字段,不用管。
复制代码
回复 点赞 拍砖

使用道具 举报

头像被屏蔽
发表于 2022-7-7 14:27:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 点赞 拍砖

使用道具 举报

发表于 2022-7-11 08:33:43 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2022-7-26 19:43:49 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2022-8-5 10:58:47 | 显示全部楼层
如何根据主产品编码及联产品编码,快速导入BOM中的联产品设置?(注意联产品产量一定,都是0.05,单位都是kg)
[url=][/url]

  • 数据库创建一个临时表
    1. CREATE TABLE "PEIDA"."TEMP_A"
    2.    (        "MAINCODE" NVARCHAR2(50), --主产品编码
    3.         "SUBCODE" NVARCHAR2(50)     --联产品编码
    4.    )
    复制代码

  • PL/SQL Developer中,找到该表,右键   【编辑数据】。将主/联产品编码直接拷贝进入。提交
  • 编写SQL:insert into  ..... select  from 模式插入数据。
    1. insert into bd_bom_outputs (CASTUNITID,
    2. CBOM_OUTPUTSID,
    3. CBOMID,
    4. CCUSTOMERID,
    5. CCUSTOMERID_V,
    6. CMATERIALID,
    7. CMATERIALVID,
    8. CPRODUCTORID,
    9. CPROJECTID,
    10. CUNITID,
    11. CVENDORID,
    12. CVENDORID_V,
    13. DR,
    14. FOUTPUTTYPE,
    15. NASTOUTPUTNUM,
    16. NBYPRODSPTNUM,
    17. NOUTPUTNUM,
    18. PK_GROUP,
    19. PK_ORG,
    20. PK_ORG_V,
    21. TS,
    22. VBDEF1,
    23. VBDEF10,
    24. VBDEF11,
    25. VBDEF12,
    26. VBDEF13,
    27. VBDEF14,
    28. VBDEF15,
    29. VBDEF16,
    30. VBDEF17,
    31. VBDEF18,
    32. VBDEF19,
    33. VBDEF2,
    34. VBDEF20,
    35. VBDEF3,
    36. VBDEF4,
    37. VBDEF5,
    38. VBDEF6,
    39. VBDEF7,
    40. VBDEF8,
    41. VBDEF9,
    42. VCHANGERATE,
    43. VFREE1,
    44. VFREE10,
    45. VFREE2,
    46. VFREE3,
    47. VFREE4,
    48. VFREE5,
    49. VFREE6,
    50. VFREE7,
    51. VFREE8,
    52. VFREE9,
    53. VROWNO)

    54. select '0001Z0100000000000XI' as  CASTUNITID
    55. ,'0001INSERT' || LPAD(row_number() over(order by A.MAINCODE,A.Subcode),10,'0') as CBOM_OUTPUTSID
    56. , bom.cbomid
    57. , '~' as CCUSTOMERID
    58. , '~' as CCUSTOMERID_V
    59. , sm.pk_material  CMATERIALID
    60. , sm.pk_material CMATERIALVID
    61. , '~' CPRODUCTORID
    62. , '~' CPROJECTID
    63. ,'0001Z0100000000000XI' CUNITID,
    64.   '~' CVENDORID,
    65.   '~' CVENDORID_V,
    66.   0 DR,
    67.   2 FOUTPUTTYPE,
    68.   0.05 NASTOUTPUTNUM,
    69.   0.00 NBYPRODSPTNUM,
    70.   0.05 NOUTPUTNUM,
    71.   bom.pk_group PK_GROUP,
    72.   bom.pk_org PK_ORG,
    73.   bom.pk_org_v PK_ORG_V,
    74.   bom.ts as ts,
    75.   '~' VBDEF1,
    76.   '~' VBDEF10,
    77.   '~' VBDEF11,
    78.   '~' VBDEF12,
    79.   '~' VBDEF13,
    80.   '~' VBDEF14,
    81.   '~' VBDEF15,
    82.   '~' VBDEF16,
    83.   '~' VBDEF17,
    84.   '~' VBDEF18,
    85.   '~' VBDEF19,
    86.   '~'  VBDEF2,
    87.   '~' VBDEF20,
    88.   '~' VBDEF3,
    89.   '~' VBDEF4,
    90.   '~' VBDEF5,
    91.   '~' VBDEF6,
    92.   '~' VBDEF7,
    93.   '~' VBDEF8,
    94.   '~' VBDEF9,
    95. '1/1' VCHANGERATE,
    96.   '~' VFREE1,
    97.   '~' VFREE10,
    98.   '~' VFREE2,
    99.   '~' VFREE3,
    100.   '~' VFREE4,
    101.   '~' VFREE5,
    102.   '~' VFREE6,
    103.   '~' VFREE7,
    104.   '~' VFREE8,
    105.   '~' VFREE9,
    106. ROW_NUMBER()OVER(partition by A.Maincode order by A.Subcode) VROWNO  
    107. from temp_a A
    108. inner join bd_material mm on A.Maincode=mm.code and mm.dr=0
    109. inner join bd_bom bom on bom.hcmaterialid = mm.pk_material and bom.dr=0
    110. inner join bd_material sm on A.Subcode = sm.code and sm.dr=0

    复制代码







回复 点赞 拍砖

使用道具 举报

发表于 2022-8-29 17:50:17 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2022-9-7 10:16:29 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2022-9-11 22:01:19 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2023-5-15 16:49:06 | 显示全部楼层
如何快速脱敏数据,以更改客户名称为例:
  1. select 'update ' ||  mdc.defaulttablename  || ' set ' || mdp.name || '= replace(' || mdp.name || ',''客户名称'',''用友农牧'');' from md_property mdp
  2. inner join md_class mdc on mdp.classid = mdc.id
  3. inner join md_class mdt on mdp.datatype = mdt.id
  4. where 1=1
  5. and mdp.datatype in ('BS000010000100001058')
  6. and length(nvl(mdc.defaulttablename,''))>0 and  length(nvl(mdp.name,''))>0
复制代码
执行上述语句后,讲产生批量的update语句,将该结果拷贝成SQL文本,再批量执行即可。
回复 点赞 拍砖

使用道具 举报

发表于 2023-5-15 17:50:25 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-4-26 15:43 , Processed in 0.059370 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表