2012-12-01 3 views
0

Эта хранимая процедура дает мне ошибку из-за усечения на customerAddress.SQL Server 2008 Хранимые приводы

Вот мой код:

CREATE PROCEDURE insertNewCustomer 
-- Add the parameters for the stored procedure here 
@customerId char(8), 
@customerName varChar(20), 
@customerAddress varChar(18), 
@zipCode integer 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

-- Insert statements for procedure here 
INSERT INTO customer (customerId, customerName, customerAddress, zipCode) 
VALUES ('Z0999999', 'Larisa Preiser', '3801 W. Temple Avenue', '92335') 
END 
GO 

EXEC insertNewCustomer 1, '', '', 0 

Любые идеи о том, как сделать его укоротить его?

+0

Можете ли вы показать, как вы тестируете и каковы результаты до и после –

+0

Вы выполнили процедуру, используя инструкцию EXEC? – dctucker

+0

Да, он говорит, что команда успешно завершена. Также результаты не являются строками в оба раза! – DDDD

ответ

1

Вы выполнили процедуру, используя инструкцию EXEC?

Сначала вы должны создать процедуру, выполнив команду CREATE PROCEDURE, а затем выполните ее с помощью команды EXECUTE. Прочтите этот учебник.

http://databases.about.com/od/sqlserver/a/storedprocedure.htm

Попробуйте запустить

EXECUTE insertNewCustomer 1, '', '', 0 

Измените процедуру следующим

CREATE PROCEDURE insertNewCustomer 
-- Add the parameters for the stored procedure here 
@customerId char(8), 
@customerName varChar(20), 
@customerAddress varChar(18), 
@zipCode integer 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

-- Insert statements for procedure here 
INSERT INTO customer (customerId, customerName, customerAddress, zipCode) 
VALUES (@customerId, @customerName, @customerAddress, @zipCode) 
END 
GO 
+0

@PrettSangda Я пытаюсь предоставить направление, пожалуйста, unflag – dctucker

+0

Я говорю, что строка строки или двоичные данные строки 19 будет усечена. – DDDD

+0

Ах, это хорошо, значит, он пытается ВСТАВИТЬ. Вы должны убедиться, что таблица может содержать все данные, которые вы бросаете на нее, хотя ваша команда INSERT существует. Кроме того, если вы хотите связать входы (@customerID и т. Д.), Вы должны поместить их в инструкцию INSERT в последовательности CREATE или ALTER PROCEDURE. – dctucker

1

При запуске выше скрипт для создания хранимой процедуры в базе данных.

Чтобы выполнить хранимую процедуру после создания.

Например

exec insertNewCustomer 'xxx','xxx','xxx',0 

пожалуйста отметил, что ваш пример запроса не принимают входные аргументы в качестве входных данных для вставки в таблицу

0

Если запустить код SQL Server, размещенных, это будет создать хранимую процедуру. Он не будет запускать хранимую процедуру или вставить любые строки в таблицу ваших клиентов.

После того, как вы создали хранимую процедуру, ее можно вызвать. Большинство людей вызывают хранимые процедуры с использованием языка, такого как C#. Я понятия не имею, какой, если есть, другой язык, который вы используете.

Вы также можете запустить хранимую процедуру непосредственно в SQL Server Management Studio с помощью команды EXECUTE. (Если у вас есть SQL Server, у вас есть команда EXECUTE.)

+0

Мой ответ содержал ссылку. Вы щелкнули по нему? –

+0

Есть примеры у основания. Ваша хранимая процедура требует нескольких аргументов; однако он не использует их. –

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