На моем компьютере с Ubuntu мне нужно вызвать хранимую процедуру, которая принимает входной параметр XML. Я не понимаю, как правильно вызвать хранимую процедуру, передающую параметр. Я пробовал команды ниже
XML=$(echo "cat doc.xml")
sqlcmd -Q "exec MyStoredProc @Dataxml=$($XML)"
Или же
sqlcmd -Q "exec MyStoredProc @Dataxml=$XML"
Или же
sqlcmd -Q "exec MyStoredProc @Dataxml=$(XML)"
Но ничего из этого не сработало. Моя версия sqlcmd - 17.1.0000.1 Linux





Передайте значение параметра XML как строковый литерал:
sqlcmd -Q "exec MyStoredProc @Dataxml='$XML';"
или это может быть потому, что сам xml имеет одинарные кавычки, что заставляет его использовать, а sqlcmd обрабатывает части XML как список аргументов
@HSharma, истина, если значения атрибутов заключены в одинарные кавычки. В противном случае XML будет включать ссылку на сущность "e; для одинарных кавычек, поэтому SQLCMD не будет неправильно ее интерпретировать.
Спасибо за ваш ответ. Это действительно сработало. Я отметил, что это принято. Однако мой XML-файл довольно большой, и теперь он выдает ошибку «Список аргументов слишком длинный». Вы видите какое-либо решение для этого? размер XML составляет около 900 КБ