p_dm_log.tmp_qry_log_1.sql.add('DECLARE @ptrval varbinary(16) '+
             'SELECT @ptrval=textptr(map) FROM map_room  '+
             'WHERE unit_code= :unit_code and build_no= :build_no and location= :location and '+
             ' datalength(map)>0 '+
             'readtext map_room.map @ptrval :pos :size ');
      p_dm_log.tmp_qry_log_1.parambyname('pos').asinteger:=pos;
      p_dm_log.tmp_qry_log_1.parambyname('size').asinteger:=j;
      p_dm_log.tmp_qry_log_1.open;
运行时  说unit_code  是个unknow type我在sql 库中直接运行是可以的运行的代码是这样的DECLARE @ptrval varbinary(16) SELECT @ptrval = textptr(map)
                                   FROM map_room
                                   WHERE unit_code = 16520704 AND build_no = 'D04' AND 
                                         location = '富春花园D组团4幢' AND datalength(map) 
                                         > 0 READTEXT map_room.map @ptrval 3000 0
啊!,怎么回事啊!

解决方案 »

  1.   

    :unit_code 
    :build_no 
    :location 
    这三个参数好像没有赋值啊!
      

  2.   

    参数不赋值,居然犯这种错????建议:
    用TBlobStream去读还好一些,用READTEXT太麻烦了.
    var
      tmp: TMemoryStream;
      aa: TBlobStream;
    aa:=TBLobStream.Create(BLOB字段, bmRead);
    try
      tmp.LoadFromStream(aa);
    finally
      aa.Free;
    end;
      

  3.   

    我怀疑这种语句能不能用AdoQuery.Open;
    感觉要用AdoStoredProc
      

  4.   

    我怀疑这种语句能不能用AdoQuery.Open;
    感觉要用AdoStoredProc