Форум: "Базы";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];
Вниз
Помогите со StoredProc Найти похожие ветки
← →
AleksandrKu (2003-04-09 14:36) [0]при вызове прицедуры выдает сообщение что неможет преобразовать тип varchar в int хотя преобразую Varchar в datetime
попробывал прописать значения напрямую все равно напомогает
что может быть и как с этим бороться?
текст процедуры
CREATE PROCEDURE Dbo.create_dog
@IdOper int,
@IdGD int,
@IdGB int,
@IdKontr int,
@IdTip int,
@Summa money,
@SummaP money,
@SummaR money,
@DataDog varchar(10),
@DateIsp varchar(10),
@DayToIsp int,
@DateOf varchar(10),
@NumDog varchar (50),
@Prim varchar(254)
as
declare
@ident int;
insert into dogov
(IdOper, IdGD, IdGB, IdKontr, IdTip, Summa, SummaP, SummaR, DataDog, DateIsp, DateOf, NumDog, Prim)
values (@IdOper, @IdGD, @IdGB, @IdKontr, @IdTip, @Summa, @SummaP, @SummaR, convert(datetime,"01.01.03" ,104), convert(Datetime,"01.02.03" ,104), convert(datetime,"01.03.03" ,104) , @NumDog, @Prim)
GO
← →
stone (2003-04-09 14:43) [1]set dateformat dmy
insert into dogov (IdOper, IdGD, IdGB, IdKontr, IdTip, Summa, SummaP, SummaR, DataDog, DateIsp, DateOf, NumDog, Prim)
values (@IdOper, @IdGD, @IdGB, @IdKontr, @IdTip, @Summa, @SummaP, @SummaR, "01.01.03", "01.02.03", "01.03.03",@NumDog, @Prim)
← →
AleksandrKu (2003-04-09 14:47) [2]Спасибочки надеюсь поможет сейчас попробую
← →
AleksandrKu (2003-04-09 15:02) [3]Не некатит опять тоже самое выдает
← →
Zz_ (2003-04-09 15:07) [4]Параметры в ХП передаются не по имени, а по порядковому номеру.
Наверняка у тебя несоответсвие.
Покажи как создаешь параметры в Delphi
← →
AleksandrKu (2003-04-09 15:10) [5]My.create_dog.Parameters.ParamByName("@DataDog").value:=DataDog.text;
My.create_dog.Parameters.ParamByName("@DateIsp").value:=dateIsp.text;
My.create_dog.Parameters.ParamByName("@NumDog").value:=NumDog.text;
My.create_dog.Parameters.ParamByName("@IdOper").value:=my.operac.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdGD").value:=my.GenDir.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdGB").value:=my.GlaBuh.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdKontr").value:=my.View_kontr.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdTip").value:=my.Tip_oper.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@Summa").value:=strtofloat(Summa.caption);
My.create_dog.Parameters.ParamByName("@SummaP").value:=strtofloat(SummaP.Caption);
My.create_dog.Parameters.ParamByName("@SummaR").value:=strtofloat(SummaR.Caption);
My.create_dog.Parameters.ParamByName("@DayToIsp").value:=strtoint(DayToIsp.caption);
My.create_dog.Parameters.ParamByName("@DateOf").value:=datetostr(now);
{param:="@Dohod";
Set_Param_Proc(my.Update_dog,param ,NumDog.Text);
param:="@FlSobs";
Set_Param_Proc(my.Update_dog,param ,NumDog.Text);}
{ My.create_dog.Parameters.ParamByName("@Prim").value:=prim.Text;}
try
my.Create_dog.ExecProc;
MessageDlg(vartostr(my.create_dog.Parameters.Parambyname("@Return_Value").value),mtError,[mbOk],0);
Edit_dogov.Close;
{ action:=caFree;}
except
MessageDlg("
← →
Zz_ (2003-04-09 15:11) [6]Не присваиваешь, а создаешь
← →
NAlexey (2003-04-09 15:21) [7]А почему ты решил что это так? -
convert(datetime,"01.03.03" ,104)
Вот так:
select convert(datetime,Cast("01.03.03" as DateTime) ,104)
← →
AleksandrKu (2003-04-09 15:23) [8]>NAlexey
вообщето хелр читал но насколько понял на столько так и написал
← →
AleksandrKu (2003-04-09 15:24) [9]>Zz_
Насколько я знаю := - оператор присваивания а создается (добавляется)параметр командой Add
← →
AleksandrKu (2003-04-09 15:28) [10]Не
select convert(datetime,Cast("01.03.03" as DateTime) ,104)
то же самое некатит
← →
NAlexey (2003-04-09 15:31) [11]>вообщето хелр читал но насколько понял на столько так и написал
Погоди, у тебя написано:
@DateIsp varchar(10), - поле varchar. Так?
ты пытаешься записать-
convert(datetime, "01.03.03" ,104)
так вот выделенная часть у тебя и так varchar. А конверт у тебя написан так, чтобы преобразовывать DateTime в varchar. Если ты напишешь:
select convert(DateTime, GetDate(), 104). все нормально заработает. Вот и не понятно зачем тебе конвертить varchar в varchar ч.з дату. По видимому ты хочешь как то отформатить ее в соответсвии с кодом 104-German dd.mm.yy . А иначе в этом смысла нет.
← →
NAlexey (2003-04-09 15:35) [12]>select convert(datetime,Cast("01.03.03" as DateTime) ,104)
>то же самое некатит
Не надо писать в своем запросе
select convert(datetime,Cast("01.03.03" as DateTime) ,104)надо подставить везде заместо
convert(datetime,"01.01.03" ,104) и других такихже вот так
(datetime,Cast("01.03.03" as DateTime) ,104)
а если и так не проходит значит дело не здесь, а в том что ты в другие параметры грязь передаешь.
← →
AleksandrKu (2003-04-09 15:36) [13]нет немного нетак я дату передаю переменной @DateIsp varchar
а в поле БД DateIsp куда я записываю значение переменной типа DateTime!
← →
Zz_ (2003-04-09 15:38) [14]Давай по порядку.
В QA вызов ХП выполняется ?
← →
AleksandrKu (2003-04-09 15:44) [15]Конечно причем либо только с полями DateTime либо с полями Int
← →
NAlexey (2003-04-09 15:45) [16]Повторю:
select convert(datetime,Cast("01.03.03" as DateTime) ,104) -
эта строка преобразует "01.03.03" сначала в дату, а потом в varchar в соответсвии с форматом 104.
>нет немного нетак я дату передаю переменной @DateIsp varchar
>а в поле БД DateIsp куда я записываю значение переменной типа >DateTime!
А вот с этого надо было начинать, что тебе varchar надо преобразовывать в дату. Тогда просто так, безо всяких Convert -замени все Convert на Cast("01.03.03" as DateTime). И если у тебя поле в BD типа DateTime то строка пришедшая в виде "01.03.03"преобразуется в DateTime все.
← →
Zz_ (2003-04-09 15:50) [17]А попробуй руками задать параметры
ADOSP.Parameters.Clear;
ADOSP.Parameters.CreateParameter("@RETURNING_VALUE", ftInteger,pdReturnValue,4,0);
ADOSP.Parameters.CreateParameter("@I_ID", ftInteger,pdInput, 4,0);
....
в том же порядке, что и в ХП
Что будет ?
← →
AleksandrKu (2003-04-09 16:34) [18]о вроде получилось через cast и переставил в программе параметры попорядку как в ХП но..
у меня в базе дата храниться в формате храниться дд.мм.гггг передаю в этомже формате а cast переворачивает в формат мм.дд.гггг как можно установить формат даты?
если в начале процедуры поставлю set dateformat dmy поможет
← →
NAlexey (2003-04-09 16:53) [19]Меню Start->Programs->Microsoft SQL Server->Client Network Utility->DBLibraryOptions
Галки AutomaticAnsiTOOEM Convertion и UseInternationalSetting должны стоять, проверь.
← →
AleksandrKu (2003-04-09 16:55) [20]не Set DateFormat dmy помогло
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c