Проблема с курсором и функцией печати и курсора - PullRequest
0 голосов
/ 06 сентября 2010

Я просто работал с курсором в SQL 2008, но у меня возникли некоторые проблемы.Во-первых, строка, в которой я объявлял курсор, каждый раз, когда я выполняю запрос, выдает ошибку.который говорит, что курсор с таким именем уже существует.Я хочу предложить мне способ, которым, если курсор существует, не создавать его, и если он еще не определен, sql создает его.я объявил, что закрыл и освободил курсор в конце кода, но проблема все еще осталась.

неверно ??каков синтаксис в SQL и как мы можем напечатать несколько переменных в SQL, если это возможно, пожалуйста, предложите способ связать две переменные и несколько строк между ними, например, как показано ниже:другой вопрос для каждой строки, которую я печатаю, я хочу напечатать номер строки, например, что-то вроде этого:
1 имя клиента идентификатор клиента ...
2 имя клиента идентификатор клиента ...
...
конец курсора.
как бы вы предложили реализовать и напечатать эти числа в операторе while курсора?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2010

Не совсем понятно, что вы пытаетесь сделать. Почему бы просто не выполнить свой запрос, чтобы получить все результаты за один раз, а затем использовать свой клиентский код для форматирования и представления данных?

select CustomerID, [Customer Name], [Product Name], Maximum from favorit

Вы можете использовать функцию ROW_NUMBER () для добавления номеров строк, если хотите, или нумерации их в клиентском приложении при представлении вывода.

Далее, PRINT - это оператор, а не функция. Он может печатать только одну строку, поэтому вам нужно создать, а затем ПЕЧАТЬ строки. Ваш второй пример может действительно работать, но вам придется обрабатывать любые другие типы данных:

print cast(@custID as varchar(10)) + 'this is the customer name' + cast(@custName as varchar(100)) + 'etc'  

Наконец, форматирование и печать данных непосредственно из TSQL обычно являются признаком того, что вы делаете что-то не так. Обычный подход состоит в том, чтобы вернуть набор результатов клиентскому приложению и позволить клиентскому приложению отформатировать его, распечатать, преобразовать в PDF или любой другой формат. Ваше приложение может быть небольшим Perl-скриптом, полным отчетным решением или чем-то еще, но PRINT не очень хороший механизм для представления данных.

0 голосов
/ 06 сентября 2010

Вы можете объявить курсор один раз наверху. Затем откройте его при необходимости. Команда «open» вызывает извлечение свежих данных из базы данных.

, тогда ваш синтаксис печати такой:

print 'my custI is %1!, custName is %2!', @custId, @custName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...