什么是oracle中这些各种sql表的等价物

时间:2011-03-14 11:16:41

标签: sql oracle syntax

SQL表:

sys.types 系统对象 syscolumns中 sysindexes的 INFORMATION_SCHEMA.COLUMNS

你能帮我转换成oracle语法

吗?
DECLARE @tableUpdateCount tinyint
set @tableUpdateCount = 0
/* 
* CALCDETL.ALIAS - 1
*/
if exists (select * from syscolumns where id = (select id from sysobjects where name = 'ABC' and type = 'U') and name = 'ALIAS' and xusertype = (select user_type_id from sys.types where name = 'nvarchar') and prec = 20)
begin
    set @tableUpdateCount = @tableUpdateCount + 1
    print ' '
    print '1.  ABC.ALIAS exists'
end

有没有可以轻松转换sql-to-oracle语法的工具?

谢谢!

3 个答案:

答案 0 :(得分:4)

sysobjects  <-> USER_OBJECTS
syscolumns  <-> USER_TAB_COLUMNS
sysindexes <-> USER_INDEXES

您可以使用ALL / DBA而不是USER,具体取决于您要搜索的范围(以及您在数据库中的角色)

有关详细信息,请参阅Reference

并检查:Oracle Functions Pl/SQL进行转化

答案 1 :(得分:1)

这肯定会帮助你。它是免费的。

顺便说一句,要转换SQL syntax-> Oracle syntax,您必须首先进行此比较。

答案 2 :(得分:1)

set ServerOutPut on;

DECLARE
     tableUpdateCount number(1) := 0;
     Id number(5);
/* 
* CALCDETL.ALIAS - 1
*/
Begin
select id into Id from syscolumns where id = (select id from sysobjects where name = 'ABC' and type = 'U') and name = 'ALIAS' and xusertype = (select user_type_id from sys.types where name = 'nvarchar') and prec = 20);

    tableUpdateCount := tableUpdateCount + 1; 
    dbms_outPut.Put_line('');
    dbms_outPut.Put_line('1.  ABC.ALIAS exists'); 
Exception
    when No_Data_found then
          dbms_outPut.Put_line('ABC.ALIAS not found');
End;