首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

这条动态sql话语为何无法成功执行

2012-09-01 
这条动态sql语句为何无法成功执行ls_sqlselect md5info.mingwen into +b+ from md5info where md5in

这条动态sql语句为何无法成功执行
ls_sql="select md5info.mingwen into '"+b+"' from md5info where md5info.md5jm='“+sle_1.text+”'"
EXECUTE IMMEDIATE:ls_sql Using sqlca;

b是变量,md5info.md5jm中有一条符合条件的,但b无法获得返回值。

[解决办法]
ls_sql="select md5info.mingwen into "+b+" from md5info where md5info.md5jm='“+sle_1.text+”'"
EXECUTE IMMEDIATE:ls_sql Using sqlca;

b的前后表加引号就OK,
哈哈,轻松得100分,
[解决办法]
b的前后不要加引号就OK
[解决办法]
b前面加一个@ 

ls_sql="select md5info.mingwen into @"+b+" from md5info where md5info.md5jm='“+sle_1.text+”'"
EXECUTE IMMEDIATE:ls_sql Using sqlca;

[解决办法]
最后要不要加一个 ; 号。
你后台数据库是什么? oracle还是sql?
[解决办法]
试试这样写(加了个冒号):
ls_sql="select md5info.mingwen into :"+b+" from md5info where md5info.md5jm='“+sle_1.text+”'"
EXECUTE IMMEDIATE:ls_sql Using sqlca;


[解决办法]
lZ 再查一下PB 的帮助,嵌入式SQL 不是这么写的,试一下:

select mingwen into :b from md5info where md5jm = :sle_1.text using sqlca;

[解决办法]
变量不能是动态的,
动态的话就是SQL里的select into 建立表了
[解决办法]
或者是你看一下游标(或动态游标)
[解决办法]

探讨
引用:
lZ 再查一下PB 的帮助,嵌入式SQL 不是这么写的,试一下:

select mingwen into :b from md5info where md5jm = :sle_1.text using sqlca;


这么写可以,但想用动态sql

[解决办法]
对的,Dynamic SQL Format 3 或Dynamic SQL Format 4

[解决办法]
探讨
引用:
引用:
lZ 再查一下PB 的帮助,嵌入式SQL 不是这么写的,试一下:

select mingwen into :b from md5info where md5jm = :sle_1.text using sqlca;


这么写可以,但想用动态sql


非要用动态SQL,EXECUTE IMMEDIATE 是 Dynamic……

[解决办法]
动态sql,不能使用into变量来取值

动态sql的取值,可以这样来:

string ls_sql,ls_mingwen

ls_sql = select md5info.mingwen from md5info where md5info.md5jm='“+sle_1.text+”'"

prepare sqlsa from :ls_sql;
describe sqlsa into sqlda;
declare myprc dynamic procedure for sqlsa;
execute dynamic myprc using descriptor sqlda;
fetch myprc using descriptor sqlda;
close myprc;

mingwen = getdynamicstring(sqlda,1)

热点排行