DB2临时表无法创建的解决方法

DB2临时表无法创建的问题的确很让我们头疼,下面就为您介绍一个解决DB2临时表无法创建问题的方法,希望对您学习DB2临时表方面能有所帮助。

 
 
 
  1. procedure TXXXForm.lc_procHandleStandard(strpo:string; xPOSEQ:Integer);//HXYADD----24/09/2010----
  2. var
  3. strFieldList:string;//A-JW-02-351101-01
  4. begin
  5. strFieldList:='XNAME VARCHAR(80),'#13#10
  6.                +'XKIND VARCHAR(20),'#13#10
  7.                +'ENAME VARCHAR(20),'#13#10
  8.                +'CNAME VARCHAR(20),'#13#10
  9.                +'XBIAO VARCHAR(80),'#13#10
  10.                +'XCODE INTEGER,'#13#10
  11.                +'XGRADE INTEGER ';
  12. strTmpTableName:=lc_CreatTmpTable(strFieldList);
  13. if strTmpTableName='' then
  14. begin
  15.     Messagebox(handle,'无法创建 [执行标准资料] 临时表﹗','提示信息',mb_Ok);
  16.     Exit;
  17. end;//*)
  18. qry6.Close;
  19. qry6.SQL.Clear;
  20. qry6.SQL.Add('DELETE FROM '+strTmpTableName);
  21. qry6.ExecSQL;
  22. qry6.Close;
  23. qry6.SQL.Clear;
  24. qry6.SQL.Add('INSERT INTO '+strTmpTableName);
  25. qry6.SQL.Add('(XNAME,XKIND,ENAME,CNAME,XBIAO,XCODE,XGRADE)');
  26. qry6.SQL.Add('SELECT VALUE(K.PROD_NAME,''''),');
  27. qry6.SQL.Add('       CASE K.PROD_KIND WHEN 0 THEN ''0 原色产品'' ');
  28. qry6.SQL.Add('            WHEN 1 THEN ''1 水洗产品'' ');
  29. qry6.SQL.Add('         ELSE ''X 不分类'' END PROD_KIND,');
  30. qry6.SQL.Add('       VALUE(A.COLOR_ENG_NAME,''''),');
  31. qry6.SQL.Add('       VALUE(A.COLOR_CHN_NAME,''''),');
  32. qry6.SQL.Add('       VALUE(K.ZHIXIN_BIAO,''''),');
  33. qry6.SQL.Add('       K.S_CODE,');
  34. qry6.SQL.Add('       A.COLOR_GRADE ');
  35. qry6.SQL.Add(' FROM GSSAL.SAL_PO_DTLA A ');
  36. qry6.SQL.Add(' LEFT JOIN GSSAL.SAL_PO X ON (X.PO_NO=A.PO_NO AND X.GEN_POSEQ=A.GEN_POSEQ) ');
  37. qry6.SQL.Add(' LEFT JOIN GSSAL.SAL_KIND K ON (K.S_CODE=VALUE(A.PROD_CODE,X.PROD_CODE)) ');
  38. qry6.SQL.Add(' WHERE A.PO_NO=:PO_NO AND A.GEN_POSEQ=:GEN_POSEQ');
  39. qry6.SQL.Add('   AND VALUE(K.ISVALID,''N'')=''Y'' ');
  40. qry6.SQL.Add(' ORDER BY K.PROD_NAME,A.COLOR_ENG_NAME ');
  41. qry6.ParamByName('PO_NO').AsString:=strpo;
  42. qry6.ParamByName('GEN_POSEQ').AsInteger:=xPOSEQ;
  43. qry6.ExecSQL;
  44. qry6.Close;
  45. qry6.SQL.Clear;
  46. qry6.SQL.Add('SELECT * ');
  47. qry6.SQL.Add('FROM '+strTmpTableName);
  48. qry6.Open;
  49. end;
  50. ----------------------------------------------------------------------------------------------------------------------------------- 
  51. function TXXXForm.lc_CreatTmpTable(strFieldList:string):string;
  52. var
  53. strTableName:string;
  54. blnSuccess:boolean;
  55. i:integer;
  56. function lc_funcCreatTable(strFieldList,strTableName: string):Boolean;
  57. var
  58.     qryCreatTemp:TQuery;
  59. begin
  60.     Result:=False;
  61.     qryCreatTemp:=TQuery.Create(self);
  62.     with qryCreatTemp do
  63.     begin
  64.       DatabaseName:='GSCOMDB';
  65.       SQL.Clear;
  66.       SQL.Add('CREATE TABLE '+strTableName+' ('+strFieldList+') IN USERSPACE1 ');
  67.       try
  68.         ExecSQL;
  69.         Result:=True;
  70.       except
  71.       end;
  72.     end;
  73.     qryCreatTemp.Free;
  74. end;
  75. begin
  76. Result:='';//如果创建不成功则返回空字符串。
  77. strTableName:='GSTMP.TMP_'+FormatFloat('0',now*10000000)+'';
  78. for i:=1 to 50 do//循环 50次﹐再不能创建则退出。
  79. begin
  80.     blnSuccess:=lc_funcCreatTable(strFieldList,strTableName);
  81.     if blnSuccess then //如果创建成功则返回表名﹐同时退出。
  82.     begin
  83.       Result:=strTableName;
  84.       Exit;
  85.     end;
  86. end;
  87. end;
  88. ----------------------------------------------------------------------------------------------------------------------------------- 
  89. procedure TXXXForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  90. begin
  91. lstUser.Free;
  92. if strTmpTableName<>'' then
  93. begin
  94.     lc_DeleteTable(strTmpTableName);
  95.     strTmpTableName:='';
  96. end; 
  97. end;
  98. ----------------------------------------------------------------------------------------------------------------------------------- 
  99. function TXXXForm.lc_DeleteTable(strTableName:string):Boolean;
  100. var
  101. qryDeleteTemp:TQuery;
  102. begin
  103. Result:=False;
  104. qryDeleteTemp:=TQuery.Create(Self);
  105. with qryDeleteTemp do
  106. begin
  107.     DatabaseName:='GSCOMDB';
  108.     SQL.Clear;
  109.     SQL.Add('DROP TABLE '+strTableName);
  110.     try
  111.       ExecSQL;
  112.       Result:=True;
  113.     except
  114.     end;
  115. end;
  116. qryDeleteTemp.Free;
  117. end;
  118. ----------------------------------------------------------------------------------------------------------------------------------- 

当前标题:DB2临时表无法创建的解决方法
转载源于:http://www.shufengxianlan.com/qtweb/news27/319427.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联