SET PARSEONLY
检查每个 Transact-SQL 语句的语法并返回任何错误信息,但不编译和执行语句。语法SET PARSEONLY { ON | OFF }注释当 SET PARSEONLY 为 ON 时,Microsoft® SQL Server? 仅分析语句。当 SET PARSEONLY 为 OFF 时,SQL Server 编译并执行语句。SET PARSEONLY 的设置是在分析时设置,而不是在执行或运行时设置。在存储过程或触发器中不要使用 PARSEONLY。如果 OFFSETS 选项为 ON 而且没有出现错误,则 SET PARSEONLY 返回偏移量。权限SET PARSEONLY 权限默认授予所有用户===================
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; strErrorList: TStrings; begin try with adoquery1 do begin sql.Clear; sql.Add( 'insert into yt (ytname) values( '); sql.Add( ' ' 'yt ' ' '+ ') '); adoquery1.ExecSQL; end; except begin listbox1.Items.Add(adoconnection1.Errors.Item[0].Description); listbox1.Items.Add(adoconnection1.Errors.Item[1].Source); listbox1.Items.Add(adoconnection1.Errors.Item[2].SQLState); listbox1.Items.Add(adoconnection1.Errors.Item[3].HelpFile); end; end; end;===========================================================
产生错误后从Errors中取得错误:如:
try ADOQuery1.close; ADOQuery1.open; ADOQuery1.append; ADOQuery1.FieldByName('ID').asinteger := 1; ADOQuery1.post; except label1.caption := inttostr(ADOConnection1.Errors.Item[0].Get_Number);//取得错误号 label2.caption := ADOConnection1.Errors.Item[0].Get_Description;//取得描述信息 end;===================================================================
try
... except on Er:exception do if Er is EDBEngineError then //捕获EDB异常 begin ErCode:=EDBEngineError(Er).Errors[0].ErrorCode; case ErCode of ... else ... end; ... end; ... //raise; 可重新引发异常,让全局异常处理子程序来进行处理。 ... end; try ... except on ex:exception do if ex is EOleException then //捕获ADO异常 msg:=EOleException(ex).Message //iCode:=EOleException(ex).ErroCode; ... end; ... end;