2012-05-04 3 views
2

У меня есть сохраненная процедура, в которой для одного из параметров я вхожу 1 + FEU0 + 1663 в качестве varchar (50) Я получаю следующее сообщение:SQL - Сохраненный Proc - String или двоичные данные будут усечены

String or binary data would be truncated. 

Если я ввожу другое значение, он отлично работает. Есть ли способ, которым я должен входить в 1 + FEU0 + 1663, так что это не создает проблемы. Я считаю, что проблема может заключаться в том, что SQL пытается сделать это большим числом из-за знаков +.

Это то, что я использую, чтобы выполнить

exec usp_Insert_Lst 'E3441-NI0dd4-12', 
           null, -- fname 
           null, -- lanme 
           null, -- mi 
           null, -- email 
           '1+FEU0+1663' -- PHID 
+1

Можете ли вы опубликовать, как вы пытаетесь выполнить его и код хранимой процедуры? – Taryn

+1

Вы помещали это между '' '? ... следующим образом:' '1 + FEU0 + 1663''? – Lamak

+0

Вам нужно показать нам код вашего sp и определение таблицы, которую вы вставляете в – Lamak

ответ

0

Я не могу воспроизвести ваше дело, используя только данные, которые вы дали на ваш вопрос.

CREATE PROC usp_Insert_Lst(
    @p1 varchar(50) 
    ,@p2 varchar(50) 
    ,@p3 varchar(50) 
    ,@p4 varchar(50) 
    ,@p5 varchar(50) 
    ,@p6 varchar(50) 
) 
AS 
SELECT @p1, @p2, @p3, @p4, @p5, @p6 
GO 

exec usp_Insert_Lst 'E3441-NI0dd4-12', 
    null, -- fname 
    null, -- lanme 
    null, -- mi 
    null, -- email 
    '1+FEU0+1663' -- PHID 
GO 

--Result 
--------------- ---- ---- ---- ---- ------------ 
E3441-NI0dd4-12 NULL NULL NULL NULL 1+FEU0+1663 

Если у вас есть что-то подобное в вашей процедуре (usp_Insert_Lst):

INSERT your_table (param1, fname, lanme, mi, email, PHID) 
SELECT @p1, @p2, @p3, @p4, @p5, @p6 

Если эта вставка возвращений: 'Строка или двоичные данные будут усечены.

Тогда это может означать, что your_table.fname или your_table.PHID меньше, чем LEN ('E3441-NI0dd4-12') и/или LEN (1 + FEU0 + 1663) соответственно.


Основываясь на ваш комментарий: У меня есть поле VARCHAR (50)

Если хранимая процедура имеет @ param1 VARCHAR (50) и your_table.field1 VARCHAR (50) это может быть то, что ошибка, которая дает строковое или двоичное сообщение, находится между началом процедуры и вставкой в ​​вашу таблицу.

CREATE PROC usp_Insert_Lst(
    @p1 varchar(50) 
... 
) 
AS 
... 
... <-- error to be found here 
... 
INSERT your_table (param1,...) 
SELECT @p1,... 
+0

Carlos, у меня есть поле varchar (50), так почему бы вам жаловаться –

+0

Nate, проверьте мои последние изменения. Это может помочь показать полный код процедуры, хотя, если слишком долго, я, вероятно, не прочитаю его :) –

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