是的,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;