Помогите разобраться с хранимой процедурой:
В ХП передается ID документа(@DocID) и сумма заголовков подчиненных документов (@child) для записи в поле ChildDocSum tbl_Document
ALTER PROCEDURE [dbo].[doc_child]
@DocID uniqueidentifier,
@child nvarchar(2000)
AS
BEGIN
UPDATE tbl_Document
SET ChildDocSum = @child
WHERE ID = @DocID
END
Запускаю я ее из скрипта следующим образом:
var Params = System.CreateObject('TSObjectLibrary.Parameters');
AddParameter(Params, pdtGUID, ParentID).Name = 'DocID';
AddParameter(Params, pdtString, ChildParentTitle).Name = 'child';
var SQL = "exec doc_child :DocID, child";
Connector.DBEngine.ExecuteCustomSQL(SQL, Params);
но вместо суммы заголовков подчиненных документов, сформированных в переменной ChildParentTitle в tbl_Document записывается строка child.
В чем может быть дело? В передаче параметров в ХП или в самой процедуре?
Версия TSCRM 3.3.1.72 на MSSQL2005
Нравится
Юрий, Вы пропустили двоеточие:
var SQL = "exec doc_child :DocID, :child";
Юрий, еще как вариант запустить профайлер и посмотреть реальный запрос к серверу при запуске ХП. А какой смысл этой процедуры? Это можно сделать простым Update.
Александр, что Вы имеете в виду под простым Update?
Вообще смысл этой процедуры в изменении полей подчиненные/родительские документы у документов связанных с тем документом над которым трудится пользователь. А так как прав на изменение связанного документа у него может не быть, то сделать это через, например, обновление датасета не получается. Вот поэтому пробую через хранимую процедуру.
Сервис UpdateQuery. Но действительно могут быть нюансы насчет доступа. Тогда Вам необходимо еще раздать доступ public на запуск ХП.
Действительно дело было в двоеточии.
Александр, большое спасибо.