如何将此T-SQL语句重写为PL / SQL

时间:2018-08-31 13:29:02

标签: oracle plsql database-migration

declare @sql varchar(max)
declare @pimkeys varchar(max)
set @pimkeys = '69966,69965' -- input comma delimited values inside single quotation marks

SET @SQL = 
  'with basedata as( 
SELECT 
ec.Pim_key,pm.Parent_PIM_Key,pm.Item_Type,pm.Company_name,pm.Part_number,pm.Product_Desc,pm.Novation_Description
,ec.Name ,ec.Value 
    FROM edw..Products_PPS_Attributes AS ec
    join edw..DM_Product_Master as pm on ec.Pim_Key = pm.PIM_Key
    where ec.pim_key in ('+@pimkeys+'))

Select * from basedata
PIVOT (  MAX(Value) FOR Name IN( Sync_Code,Product_Line_Brand )  ) AS p'

execute (@SQL)

1 个答案:

答案 0 :(得分:2)

SQL Developer是Oracle提供的用于进行SQL Server迁移的平台。 One of the features is our scratch editor

您可以粘贴T-SQL,它将吐出PL / SQL。

工具>迁移>临时编辑器

enter image description here

与其他任何翻译一样,它不能保证100%成功的翻译,但应该为您提供一个良好的开端。

这就是我们最终得到的结果,未经任何测试。

DECLARE
   v_pimkeys VARCHAR2(4000);
   v_SQL varchar2(4000); -- i had to manually add this after the translation

BEGIN
   v_pimkeys := '69966,69965' ;-- input comma delimited values inside single quotation marks
   v_SQL := 'with basedata as( 
   SELECT 
   ec.Pim_key,pm.Parent_PIM_Key,pm.Item_Type,pm.Company_name,pm.Part_number,pm.Product_Desc,pm.Novation_Description
   ,ec.Name ,ec.Value 
       FROM edw..Products_PPS_Attributes AS ec
       join edw..DM_Product_Master as pm on ec.Pim_Key = pm.PIM_Key
       where ec.pim_key in (' || v_pimkeys || '))

   Select * from basedata
   PIVOT (  MAX(Value) FOR Name IN( Sync_Code,Product_Line_Brand )  ) AS p' ;
   EXECUTE IMMEDIATE v_SQL;

END;