hur.cn - 华软网

 热门搜索

除了用prepare能不能用更简单的语句实现?

  作者:未知    来源:网络    更新时间:2017/12/5
如果我想实现
select count(*) into :ls_counts from :ls_tab where product_id='001'
语句是无法直接执行的,提示table or view does't exist,用prepare是可以实现的,语句写起来好麻烦啊,有没有更直接的方法?
------华软网友回答------
用动态SQL语句试一下
------华软网友回复------
ls_sql="select count(*) into :ls_counts from "+ls_tab+" where product_id='001'"
execute immediate :ls_sql;
?
不行的啊,急,我要用select语句从不同的表中取十几个数据,如果用prepare的话代码好长啊
------华软网友回复------
动态的只能用动态SQL语句方法
------华软网友回复------
到底怎么做啊,那位个老大能以这个例子示范一下么?
------华软网友回复------
long ll_count
string ls_sql="select count(*) from "+ls_tab+" where product_id='001'"
DECLARE myCursor DYNAMIC CURSOR FOR sqlsa;
PREPARE sqlsa FROM :ls_sql USING sqlca;
OPEN DYNAMIC myCursor  USING sqlca;
FETCH Cursor INTO :ll_count;
CLOSE myCursor;
--
我没有判错,你自己加上。
------华软网友回复------
long ll_count
string ls_sql="select count(*) from "+ls_tab+" where product_id='001'"
DECLARE myCursor DYNAMIC CURSOR FOR sqlsa;
PREPARE sqlsa FROM :ls_sql USING sqlca;
OPEN DYNAMIC myCursor  USING sqlca;
FETCH myCursor INTO :ll_count;
CLOSE myCursor;

------华软网友回复------
long ll_count
string ls_sql="select count(*) from "+ls_tab+" where product_id='001'"
DECLARE myCursor DYNAMIC CURSOR FOR sqlsa;
PREPARE sqlsa FROM :ls_sql USING sqlca;
OPEN DYNAMIC myCursor ; //不用USING sqlca
FETCH myCursor INTO :ll_count;
CLOSE myCursor;

只能用这种句子了么?代码好长啊
------华软网友回复------
动态sql语句:
第一种:执行一个操作,即没有返回值也没有参数;
第二种:执行一个操作,可以使用参数,但不能有返回值;
第三种:既可以使用参数也可以有返回值,即解决本贴问题的方法。
第四种:最为强大,但是一般用到第三种就可以了。
详细参见帮助。
导致你使用动态sql语句的原因是你的表名是变量,如果表名、字段名是变量,则必须使用动态sql语句实现。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。