Вот пример:
Приведенная ниже процедура SQL Server возвращает 1 если таблица существует, и 2 в противном случае.
CREATE PROCEDURE up_TableExists ( @TableName varchar(50), @TableNameLen int = null) AS declare @CleanTblName varchar(50) if @TableNameLen is not null select @CleanTblName = SubString(@TableName,1,@TableNameLen) else select @CleanTblName = @TableName if EXISTS (SELECT name FROM sysobjects WHERE name = @CleanTblName) RETURN 1 else RETURN 2 Поехали...
В Delphi, прежде чем вызвать ExecProc, установите параметр длины строки... вот пример вызова хранимой процедуры в Delphi...
varsTableName: String;rc: Boolean;...sTableName := 'MyTable';With StoredProc1 dobegin. . .ParamByName('@TableName').AsString := sTableName;{ обход проблемы: передаем длину строки SQL Server дляобработки хранимой процедурой }ParamByName('@TableNameLen').AsInteger := Length(sTableName);Prepare;ExecProc;rc := ParamByName('Result').AsInteger = 1; {rc True если result = 1}if rc then.... end; |
- David Gecawich [000734]