通过动态本机SQL选择命令 [英] Select Command Through Dynamic native SQL

查看:89
本文介绍了通过动态本机SQL选择命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过在运行时提供表名作为存储过程中的输入参数来通过Dynamic native SQL执行选择命令查询.

我的代码是这样的:---

 创建 替换过程 emp_insert_16
                                         (Temp varchar2)
                             
                             类型 Cur  ref 光标;
                             ptr Cur;
                             V_Query varchar2( 500 );
                             V_First varchar2( 30 );
                             
                             开始
                             V_Query:= ' 从' || Temp;中选择名字
                             
                             打开 ptr 用于 V_Query;
                             环形
                             获取 ptr 进入 V_First;
                             退出 何时 ptr%NOTFOUND;
                             结束循环;
                             关闭 ptr;
                   结束 emp_insert_16;


声明
str varchar2( 500 );
new_temp varchar2( 50 ):= ' & Table_Name' ;
开始
str:= ' 开始emp_insert_16(:a);结束;';
执行立即执行str
使用 new_temp;
结束


但是发生错误:-ORA-00923:在预期位置找不到关键字.

请为此提供适当的解决方案.

谢谢.
Shilpi

解决方案

在from之后添加一个空格并检查:

 V_Query:= ' 从' || Temp;中选择名字pre> 


I want to execute a select command query through Dynamic native SQL by providing table name at run time as input parameter in a store procedure.

My Code is Like that:---

create or replace procedure emp_insert_16
                                         ( Temp varchar2)
                             Is
                             Type Cur is ref Cursor;
                             ptr Cur; 
                             V_Query varchar2(500);
                             V_First varchar2(30);
                             
                             Begin
                             V_Query:='Select First_Name from' ||Temp;
                             
                             open ptr for V_Query;
                             Loop
                             Fetch ptr into V_First;
                             Exit WHEN ptr%NOTFOUND;
                             End Loop;
                             Close ptr;
                   end emp_insert_16;


Declare 
str varchar2(500);
new_temp varchar2(50):='&Table_Name';
Begin
str:='Begin emp_insert_16(:a); end;';
execute Immediate str
using new_temp;
end;    


But Error Occur:- ORA-00923 : From Keyword Not found where expected.

please provide me appropriate solution for this.

Thanking You.
Shilpi

解决方案

Add a space after the from and check :

V_Query:='Select First_Name from ' ||Temp;


这篇关于通过动态本机SQL选择命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆