这条动态sql话语为何无法成功执行
这条动态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 建立表了
------解决方案--------------------
或者是你看一下游标(或动态游标)
------解决方案--------------------
------解决方案--------------------
对的,Dynamic SQL Format 3 或Dynamic SQL Format 4
------解决方案--------------------
------解决方案--------------------
动态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)
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 建立表了
------解决方案--------------------
或者是你看一下游标(或动态游标)
------解决方案--------------------
------解决方案--------------------
对的,Dynamic SQL Format 3 或Dynamic SQL Format 4
------解决方案--------------------
------解决方案--------------------
动态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)