pb编译不检查sql语法
1. pb sql语句问题
string username,username,txt
txt=trim(sle_1.text)
select U_Name, U_Code
into :username, :usercode
from User
where U_Name = :txt;
where条件里边的变量不能直接把控件名加冒号那样引用
2. 请教一个PB 查询的语法问题,报错:select: error syntax error -no sql command
根据你的描述,你的ls_select变量没有获得正确的sql语句,你可以追踪一下,看看到底得到的语句是什么
另外一点需要注意的是,看到如下这句
ls_select = is_sql + " where " + ls_select
其中 is_sql应确保和使用的datawindow 的where子句前内容相同,不然会报错
3. 我用pb9编译的程序,sql2005数据库,编译问题!
如果是IP地址访问数据库,不需要另行设置。
另外,你的DW应该有问题,正常就算数据库连接有问题,只会提示连接数据库失败,不会查询到异常内容。
4. 求PB或者SQL语句语法
是要这种效果吗?--> 测试数据:@tb
declare @tb table([name] varchar(7))
insert @tb
select '张三1' union all
select '张三12' union all
select '张三a' union all
select '张三12a' union all
select '张三B' union all
select '李四' union all
select '张三'select name,case when
substring(reverse(name),2,1) not like '[0-9]' and substring(reverse(name),2,1) not like '[a-z]'
then substring(name,1,len(name)-1) else ''end as newnamefrom @tb where right(name,1) like '[0-9]' or right(name,1) like '[a-z]'
/*
name newname
------- -------
张三1 张三
张三12
张三a 张三
张三12a
张三B 张三(5 行受影响)*/
5. pb9.0执行sql语句问题
在PB的函数或事件里面,都可以执行SQL语句;SQL语句所用到的变量要加冒号‘:’,语句必须用分号‘;’结尾。执行带有返回值的SELECT语句必须要有INTO语句,并定义接收值的变量,如:SELECT UserNo,UserName INTO :ls_UserNo,:ls_UserName FROM T_User WHERE UserNo='TestUser';UPDATE和DELETE语句语法同SQL语法一样,执行完之后还需要对事务进行提交:UPDATE Employee SET emp_name = :ls_NameWHERE Employee.emp_num = :Emp_num USING SQLCA;IF SQLCA.SQLNRows > 0 THEN COMMIT USING SQLCA ;END IF-----------DELETE FROM Employee WHERE Employee.Emp_num = :li_num ; 详细内容请参考PB的帮助文档。
6. pb中sql语句不执行
刚刚测试了你上面的代码,请将:
PREPARE SQLSA FROM 'insert into information values (:split_arry[1],:split_arry[2],:split_arry[3])';
EXECUTE SQLSA USING :split_arry[1],:split_arry[2],:split_arry[3];
改成:
PREPARE SQLSA FROM 'insert into information values (?,?,?)';
EXECUTE SQLSA USING : split_arry[1],:split_arry[2],:split_arry[3];
在PB9下执行通过。
7. 在pb中用SQL语句的一个问题
我理解了半柱香的功夫,貌似猜到了一些,如果你描述的再详细一点点,我们也不用猜了
你的这个rq,我猜是你某个表的一个字段叫rq,可能是“日期”吧,那我就当它是日期了啊
你想在文本控件里输入一个值给gh(貌似“工号”,又是猜的……)、两个日期类的值给ls_rq_1、ls_rq_2,然后组织一条SQL,查询gh=输入值 且 rq介于你输入的两个日期之间的数据——————不知道这样理解对不对
如果对了~~~(我一会肯定买彩票去~~~)那就往下看,不对就return吧,后面不用看了。
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
变量的定义及取值部分不动
ls_sql = ls_sql + ' where '+'gh'+" = '" + ls_gh + "'"
+ 'and rq > convert(date,' + ls_rq_1 + ')'
+ 'and rq < convert(date,' + ls_rq_2 + ');'
//--------------------------------------------------------
就是类似:
select * from 表
where gh = '1001'
and rq > convert(date,'2010-3-12')
and rq < convert(date,'2010-3-15');
因为你定义的ls_rq_1、ls_rq_2是字符型的,所以用SQL时,须用convert()函数转换为日期型(或者你PB程序里直接定义两个日期型的变量算了)
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
可能是正解,也可能是风马牛不相及,如果我猜的不对,咱们再慢慢研究
8. 问PB中如何检查SQL语句是否执行
PB 的脚本中可以直接嵌入SQL语句,变量引用使用":"号做前缀。
比如
string ls_name
select t_name into :ls_name from table_test ;
9. pb sql语句错误
学习了一边setsqlselect的帮助,看到这样一句表述:
If the new SELECT statement has a different table name in the FROM clause and the DataWindow object is updatable, then PowerBuilder must change the update information for the DataWindow object.
我怀疑是因为存储过程的表名和原sql里表名不同,pb对dw进行设置出现的此错误提示。
我发现dw里果然设置update属性啦,将update属性取消,问题解决。
10. pb9.0 在代码中写SQL语句,用于查某一字段,但语法有误
把代码贴上来
假如赋值字符串
string ls_result
select clo_result into :ls_result from table_name where id =:id;
if sqlca.sqlcode = -1 then
//错误
elseif sqlca.sqlcode = 100 then
//没有找到
else
//正确
end if
这样 ls_result里面有结果
