【问题标题】:How to re-write this T-SQL statement to PL/SQL如何将此 T-SQL 语句重写为 PL/SQL
【发布时间】:2019-02-06 13:12:16
【问题描述】:
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)

【问题讨论】:

  • 据我所知,这只是一条 SQL 语句,你不需要 PL/SQL
  • @thatjeffsmith:但它使用动态 SQL - 你确实需要 PL/SQL
  • @a_horse_with_no_name 虽然它看起来不是很动态,它只是在做一个字符串替换
  • 我知道它是一条 SQL 语句……但这条语句在 PL/SQL Oracle 中不起作用。所以我想知道有没有人可以帮助我翻译它。

标签: oracle plsql database-migration


【解决方案1】:

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

你可以粘贴到T-SQL,它会吐出PL/SQL。

工具 > 迁移 > Scratch Editor

与任何其他翻译人员一样,不能保证 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;

【讨论】:

  • 感谢您的快速回复。将尝试!
  • @Ahmed 我必须为 v_SQL 添加声明,但我基于您的示例的简单测试场景似乎可以正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2013-07-29
相关资源
最近更新 更多