我要将Microsoft Sql Server数据库迁移到Oracle 19c,迁移的查询失败:
DECLARE cardnum varchar2(100);
BEGIN
MyProcedure('ES', cardnum );
SELECT cardnum;
END;返回的错误是:
PL/SQL: ORA-00923: FROM keyword not found where expected我认为错误在第4行:
SELECT cardnum;该过程设置变量的值,因此我需要返回变量"cardnum“的值。
我应该用什么代替选择clausule?
注->此查询来自于带有Dapper的net。
谢谢!
发布于 2022-08-04 10:14:57
好的,您已经有了cardnum,过程将它设置为它的OUT参数,您不需要对它做任何事情。
SQL> create or replace procedure myprocedure(par_1 in varchar2, par_2 out varchar2) is
2 begin
3 par_2 := 'ABC';
4 end;
5 /
Procedure created.
SQL> declare
2 cardnum varchar2(100);
3 begin
4 myprocedure('ES', cardnum);
5
6 dbms_output.put_line('Cardnum = ' || cardnum);
7 end;
8 /
Cardnum = ABC
PL/SQL procedure successfully completed.
SQL>如果您想选择它,可以-但是PL/SQL需要一个INTO子句。例如:
SQL> declare
2 cardnum varchar2(100);
3 l_var varchar2(100);
4 begin
5 myprocedure('ES', cardnum);
6
7 select cardnum into l_var from dual;
8 end;
9 /
PL/SQL procedure successfully completed.
SQL>这取决于你到底想对cardnum做什么.
https://stackoverflow.com/questions/73234039
复制相似问题