преобразование типа данных sql - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь использовать возвращаемое значение нескольких переменных в операторе вставки безрезультатно. любая помощь будет принята с благодарностью ...

--declare vars
DECLARE @strSpiff as VARCHAR(50), @strResult as VARCHAR(50), @strCMD as VARCHAR(100), @strInsert as VARCHAR(500)

--set value for first var. returns text similar to "TOY"
SELECT @strSpiff = strDescription FROM tblNames WHERE username='name'

--get return val of select query and add some text to it. i.e. "TOY_PO"
SET @strResult = @strSpiff+'_PO'

--another query using modified var. This query returns 10.00
SET @strCMD = 'SELECT ' + @strResult + ' FROM tblproducts WHERE  product_name=''something'''

--column "Amount" is of data type money
INSERT INTO tblStuff (Name,Amount)
values('name',CAST(@strCMD as money))

получена ошибка: «Невозможно преобразовать значение символа в деньги. Значение символа имеет неверный синтаксис.»

Я безуспешно пробовал много разных сценариев приведения и преобразования.

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Вы переводите строку"SELECT TOY_PO FROM tblproducts..." в деньги, а не результат этого выполнения запроса. Ваш текущий код не выполняет его

Нет более чистого способа сделать это, потому что вы не должны полагаться на такие динамические имена столбцов. Проще говоря, SQL не предназначен для такой работы

...
SET @strCMD = 'SELECT ''name'', ' + @strResult + ' FROM tblproducts WHERE  product_name=''something'''

INSERT INTO tblStuff (Name,Amount)
EXEC (@strCMD)

или

...
SET @strCMD = '
INSERT INTO tblStuff (Name,Amount)
SELECT ''name'', ' + @strResult + ' FROM tblproducts WHERE  product_name=''something'''

EXEC (@strCMD)
0 голосов
/ 09 декабря 2011

Вы можете сделать прямой выбор и вставить, как показано ниже.

INSERT tblStuff (Name,Amount)
SELECT name, Amt FROM tblproducts WHERE  product_name='something'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...