dw保存是产生的insert语句格式问题
各位大侠们,我遇到一个问题,我的前台程序及dw都是一样的,但连接不同的数据库时(都是sqlserver2008r 2,只是在不同的机器上),dw保存时,对数据库产生的insert语句格式不一样,正常是产生的格式是
insert into table1 (column1,..) values (value1,..)
但有些库从后台跟踪到的语句是以下格式
exec sp_executesql N'INSERT INTO table1 (column1,..) values (@parm1,..),N'@Parm1 decimal(1,0),...@Parm1=2,@parm2=null....
后面这种格式带来一个问题,这个语句会把该dw的所有字段都赋予值,有些前台并没有赋值的这里会赋NULL值,如果数据库对该字段要求非NULL值(即使数据库给了字段默认值),会导致数据库报错
这是为什么呢?我的数据库连接方式都是一样,用 oledb
datawindow?sqlserver
[解决办法]
怀疑和数据库的连接方式有关
在dbparm里增加DisableBind=0的试试
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='(local)',PROVIDERSTRING='database=aaa',DisableBind=0"
[解决办法]
你更新方式换一下试试, update那里都选第二个,另给默认值的话,dw中也可以给,这个问题我也曾遇到过,不过没有深究,直接在dw中改了
[解决办法]
dw都是一样
是说是同1个DW
还是这个DW都对应同1个表?
查看DW原码,
有时是 retrieve="PBSELECT( VERSION(400) TABLE(NAME=~"bas_admin_district~" )
也可能是
retrieve=" SELECT bas_admin_district.......