Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SP  [new]
gost
Guest
SQL server 7.0 Delphi
ситуациа такая:
имеется хранимка
CREATE PROCEDURE [sp_AddObligatory]
	(@TableName		[varchar]  (100),
	@PlannedDate		[varchar]  (100),--[datetime],
	@Type_ID		[DTID],
	@Link_ID		[DTID],
	@VisitType_ID		[DTTinyID],
	@S			[varchar] (5000))

AS

DECLARE @Sql [varchar] (8000)

SET 	@Sql = 'UPDATE ' + @TableName + ' SET  PlannedDate = ''' + CONVERT(varchar,@PlannedDate, 104) + ''', ' + 
		CASE 	WHEN @TableName = 'ObligatoryConsultations' THEN 'ConsultationType_ID =  ' +  CONVERT(varchar, @Type_ID) + ', '
			WHEN @TableName = 'ObligatoryExamination' THEN 'ExaminationType_ID = ' +  CONVERT(varchar, @Type_ID) + ', '
			ELSE ''
		end + 
		CASE 	WHEN @TableName = 'ObligatoryConsultations' THEN 'LinkConsultationType_ID = ' + CONVERT(varchar, @Link_ID) + ', '	
			WHEN @TableName = 'ObligatoryExamination' THEN 'link_ID = ' + CONVERT(varchar, @Link_ID) + ', '	
			ELSE ''
		end +  'VisitType_ID = ' + CONVERT(varchar, @VisitType_ID) +
	' WHERE [ID] IN (SELECT MIN([ID]) FROM ' + @TableName + ' WHERE Patient_ID IN (' + @S + ') GROUP BY Patient_ID)'

--PRINT (@Sql)

EXEC (@Sql)
запуская его из программы в SQL server Profiler Читаю следуищее
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
set implicit_transactions on
EXEC "sp_AddObligatory;1" 'ObligatoryExamination','20040925 00:00:00.000',1,3,1,'3, 4'
IF @@TRANCOUNT > 0 COMMIT TRAN

т.е. вызов хранимки правилныи. исклучения не выдает. как будто все хорошо, но смотрю в таблицу - нечего не изменилос, как будто хранимка и не запускалас.
списыцваю из SQL server Profiler
EXEC "sp_AddObligatory;1" 'ObligatoryExamination','20040925 00:00:00.000',1,3,1,'3, 4'  
в Query Analyzer bи поправляю
EXEC sp_AddObligatory 'ObligatoryExamination','20040925 00:00:00.000',1,3,1,'3, 4'  
т.е. удоляю те символы которые добовляет Delphi - TStoridProcedure.
запускаю из Query Analyzer, все работает отлично.

как быть?
30 сен 04, 12:44    [999484]     Ответить | Цитировать Сообщить модератору
 Re: SP  [new]
Dilo Danielidis
Member

Откуда:
Сообщений: 9
Попробуйте поставить SET NOCOUNT ON
30 сен 04, 13:19    [999675]     Ответить | Цитировать Сообщить модератору
 Re: SP  [new]
gost
Guest
не помогло
30 сен 04, 13:44    [999799]     Ответить | Цитировать Сообщить модератору
 Re: SP  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
set implicit_transactions on, а где же коммит ?
Читаем BOL - set implicit_transactions
30 сен 04, 14:11    [999936]     Ответить | Цитировать Сообщить модератору
 Re: SP  [new]
gost
Guest
транзакцию создаю и закрываю из приложения
try
    Fpoliclinic.DBPoliclinic.StartTransaction;
    ....
    ....
    ....
    SPAddObligatory.ExecProc;
    Fpoliclinic.DBPoliclinic.Commit;
    CBObligatoryType.Text := '';
  except
    Fpoliclinic.DBPoliclinic.Rollback;
    Application.MessageBox('ошибка!','проблемма',0);
  end;
30 сен 04, 14:37    [1000050]     Ответить | Цитировать Сообщить модератору
 Re: SP  [new]
gost
Guest
транзакцию создаю и закрываю из приложения
try
    Fpoliclinic.DBPoliclinic.StartTransaction;
    ....
    ....
    ....
    SPAddObligatory.ExecProc;
    Fpoliclinic.DBPoliclinic.Commit;
    CBObligatoryType.Text := '';
  except
    Fpoliclinic.DBPoliclinic.Rollback;
    Application.MessageBox('ошибка!','проблемма',0);
  end;
30 сен 04, 15:18    [1000101]     Ответить | Цитировать Сообщить модератору
 Re: SP  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
т.е. удоляю те символы которые добовляет Delphi - TStoridProcedure.
Что-то здесь не так... SQL server Profiler отображает запросы в том виде, в котором их приходится обрабатывать SQL server-у, ихмно. И если Delphi посылает EXEC "sp_AddObligatory;1" ..., то причину надо искать в Delphi
30 сен 04, 16:38    [1000155]     Ответить | Цитировать Сообщить модератору
 Re: SP  [new]
gost
Guest
я работаю через BDE, и етат синтаксис правилны.
но я точно устоновил что проблемма в делфи, т.к. оператор
Fpoliclinic.DBPoliclinic.Execute('EXEC sp_AddObligatory ''ObligatoryVisit'',''2004-09-12'',NULL,NULL,1,''103, 110, 111, 102''  ');
 
работает четко.
правда терер возникла другая проблема, дело в конвертации даты.
на сколько мне известно внутренее представление даты на сервере
YYYY-MM-DD ...
или может быть ище каким то?
30 сен 04, 17:20    [1000289]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить