关于将pb中超过255的字符串通过动态insert语句向sql server传值的问题(???)

lxb_lxb_2002 2004-06-28 03:56:44
如题,在向server传值的时,只记录了255个字符,而超出部分被截取掉了,结果无法向数据库中插入数据!!!!
...全文
185 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zysys 2004-07-12
  • 打赏
  • 举报
回复
同意mittee,用odbc连接可以的
还有就是用分段写入。
mittee 2004-07-09
  • 打赏
  • 举报
回复
请用odbc连接sql server数据库
Pegasuscc 2004-07-09
  • 打赏
  • 举报
回复
你用BOLB试试看
renwanly 2004-07-08
  • 打赏
  • 举报
回复
不要使用pb的动态sql,可以考虑用sqlserver数据库的动态sql
lxb_lxb_2002 2004-06-29
  • 打赏
  • 举报
回复
是的,ora是没问题的,但对sql server就会出现上诉的错误。
程序代码(此段代码为结构相同的两个数据库,通过动态sql将一个库的数据向另一个库导入数据):
PREPARE SQLSA FROM :LsSQL using sqlwa;
DESCRIBE SQLSA INTO SQLDA;
DECLARE cursor_base DYNAMIC CURSOR FOR SQLSA;
OPEN DYNAMIC cursor_base USING DESCRIPTOR SQLDA;
FETCH cursor_base USING DESCRIPTOR SQLDA;

if sqlWa.sqlcode <> 0 and sqlWa.sqlCode<>100 then
"数据库查找失败
CLOSE cursor_base;
return 0
end if
i = 0
DO WHILE SQLWA.SQLCODE=0
i = i + 1
lsColumnvalue = ""
FOR liInt=1 TO SQLDA.NumOutPuts //输出个数
if trim(lsColumnvalue) <> "" and not isnull(lsColumnvalue) then
lsColumnvalue = lsColumnvalue + ","
end if
CHOOSE CASE SQLDA.OutParmType[liInt]
CASE Typestring!
lsString = GetDynamicString(SQLDA,liInt)
lsSztr = "'" + lsString + "'"
CASE TypeDateTime!
...
CASE TypeDecimal!,TypeDouble!,TypeReal!
...
END CHOOSE
if isnull(lsSztr) then
lsSztr = "null"
end if
lsColumnvalue = lsColumnvalue + lsSztr
NEXT
s_exet="insert into " + ls_table + " values ( " + lsColumnvalue +")"
execute immediate :s_exet using SQLcA;
FETCH cursor_base USING DESCRIPTOR SQLDA;
LOOP
CLOSE cursor_base;

生成的语法为:
insert into KC_PLAN_GBJH_H values ( '2004-02-13 00:00:00','一、生产中注意安全,按安全生产五同时原则组织生产作业,注意天气变化,搞 好场地"四防"工作。各岗位人员进入现场,留意来往车辆,注意交通安全,穿 戴好劳动保护用品,作业站位到安全位置,增强自我保护意识,盯岗人员及 时到位。对垛员巡查好库场线路,装车作业?,'00','2004-02-13 15:42:46')
注:可以看到在倒数第三个字段的值,缺少了一个引号!!!
zanglinfeng 2004-06-28
  • 打赏
  • 举报
回复
你用的是什么数据库?
killerdanny 2004-06-28
  • 打赏
  • 举报
回复
你把程序形成INSERT字符串直接放到ISQL中执行,看报什么错?
基本上是类型不匹配的缘故。
我做插入ORACLE的功能,VARCHAR2(2000)都没问题
lxb_lxb_2002 2004-06-28
  • 打赏
  • 举报
回复
首先,感谢楼上的参与,可是,不是这个意思,我指的是将pb中超过255长度的字符串通过动态语句中的insert语法将pb中超过255的字符串赋值到sql对应的表中!谢谢,楼下的多给些意见!!!
madeyinzy521 2004-06-28
  • 打赏
  • 举报
回复
在PB中定义一个STRING类型,先把字符串赋到STRING类型变量上
后,用INSERT语句进行插入

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧