2017-01-03 3 views
0

Мы используем ERP-систему на основе SQL Anywhere 16. Моя новая задача - регистрировать некоторые изменения в определенных строках конкретной таблицы. Я планировал создать триггер, который сравнивает значения старой строки со значениями новой строки. Если старое и новое значение не совпадают, запись должна записываться в другую таблицу. Чтобы добавить или отредактировать Trigger, мне нужно будет вывести всех пользователей ... к сожалению ... Так что мой вопрос: Могу ли я передать две строки в хранимую процедуру, чтобы выполнить свою работу там, потому что я могу ее редактировать в то время как пользователи работают? Любые идеи? Спасибо за помощь!SQL Anywhere pass row как параметр для хранимой процедуры

+0

Вы можете передавать файлы XML в хранимой процедуре и ручкой внутри хранимая процедура. –

ответ

0

Вот vb.net код, как сделать XML

Dim dt As DataTable 
--Fill dt data 
Dim result As String 
    Using sw As StringWriter = New StringWriter 
     dt.WriteXml(sw) 
     result = sw.ToString().Replace("�", "") 'Replace Char(0) with empty string 
    End Using 

Вот хранимая процедура для разбора @xml

DECLARE @doc int 
EXEC sp_xml_preparedocument @doc OUTPUT, @xml 

SELECT column1, column2, DateAdd(hour, yourtimezone,date) AS column3 --UCT to local 
FROM OPENXML(@doc,'/NewDataSet/TableName',2) 
WITH (column1 int, column2 varchar(50),column3 smalldatetime) 
+0

на самом деле я не знаю, как использовать код vb.net с SQL Anywhere 16. Нет ли способа передать старую и новую строку хранимой процедуре без этого xml-материала? – BirdyB

+0

Вы можете попробовать сделать строку в качестве парааментария, включая вашу старую и новую строку типа '1', 'abc', '2017-01-03'; '1', 'def', '2017-01-03' –

Смежные вопросы