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


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