需要动态SQL-PL/SQL等效语句中的除法运算符(正斜杠)

需要动态SQL-PL/SQL等效语句中的除法运算符(正斜杠),sql,oracle,dynamic-sql,Sql,Oracle,Dynamic Sql,我需要编写一个动态SQL,我可以在SQL server中轻松地完成它,但在Oracle中却很难实现它 --SQL Server Declare @SQLString nvarchar(200) SET @SQLString = 'SELECT 20/2' EXECUTE (@SQLString) --Oracle equivalent Declare SQLString NVARCHAR2(4000); --SQLString := 'Select 20' || '/' || '2 from

我需要编写一个动态SQL,我可以在SQL server中轻松地完成它,但在Oracle中却很难实现它

--SQL Server 
Declare @SQLString nvarchar(200)
SET @SQLString = 'SELECT 20/2'
EXECUTE (@SQLString)

--Oracle equivalent
Declare SQLString NVARCHAR2(4000);
--SQLString := 'Select 20' || '/' || '2 from dual'; --does not work
SQLString := 'SELECT 20/2 FROM dual';   --does not work
EXECUTE IMMEDIATE SQLString;
我所有的搜索要么导致使用/作为缓冲区,要么没有太大帮助。
我想知道如何在Oracle中连接除法运算符(正斜杠)以形成动态SQL;另外,
Nvarchar2
不适用于
executeimmediate
,您需要
varchar2

这很有效

declare
    SQLString   varchar2(4000);
begin    
    SQLString := 'select 20/2 from dual';
    execute immediate SQLString;
end;
但什么也不做;以下是处理查询结果的提示:

declare
    SQLString   varchar2(4000);
    vResult     number;
begin    
    SQLString := 'select 20/2 from dual';
    execute immediate SQLString into vResult;
    dbms_output.put_line('RESULT: ' || vResult);
end;
我假设这是一些练习或示例代码,因为在这里我看不到使用动态SQL的理由;这与前面的代码相同:

declare
    vResult     number;
begin    
    select 20/2 into vResult from dual;
    dbms_output.put_line('RESULT: ' || vResult);
end;

只能在
BEGIN
/
END
/块内执行PL/SQL。也许这就是你的问题。