Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Help on Insert Stored Procedure

Author  Topic 

mayoorsubbu
Yak Posting Veteran

95 Posts

Posted - 2010-07-14 : 22:44:33
Hi Folks,
I have a table RequestMaster

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[requestmaster](
[requestid] [nchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[unit] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[requestno] [nchar](75) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[requestdt] [datetime] NOT NULL,
[recddt] [datetime] NOT NULL,
[regndt] [datetime] NOT NULL,
[remarks] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_requestmaster] PRIMARY KEY CLUSTERED
(
[requestid] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF


I have created a SP like so :

IF OBJECT_ID ('dbo.InsertRequestMaster') IS NOT NULL
DROP PROCEDURE dbo.InsertRequestMaster;
go
create procedure InsertRequestMaster
@cUnit nchar(10),
@cRequestno nchar(75),
@dRequestDt varchar (25),
@dRecdDt varchar (25),
@dRegnDate varchar (25),
@cRemarks varchar(100) = NULL
--@cRequestType nchar (4),
--@nAfQty int,
--@nAeQty int
AS
BEGIN
DECLARE @cNextId nchar(8)
DECLARE @RequestDt datetime
DECLARE @RecdDt datetime
DECLARE @RegnDt datetime

Select @RequestDt = convert(varchar(25), @dRequestDt, 105)
Select @RecdDt = convert(varchar(25), @dRecdDt, 105)
Select @RegnDt = convert(varchar(25), @dRegnDate, 105)
SELECT @cNextId= dbo.GetId(GetDate())

Print @cNextId
Print '------------'
Print @dRequestDt
--Print @RequestDt
Print '------------'
Print @dRecdDt
--Print @RecdDt
Print '------------'
Print @dRegnDate
--Print @RegnDt
Print '------------'
SET XACT_ABORT ON;
BEGIN TRANSACTION;

--BEGIN TRY
INSERT INTO RequestMaster (RequestId, Unit, RequestNo, RequestDt, RecdDt, RegnDt, Remarks)
VALUES (@cNextId, @cRequestno, @cUnit, @RequestDt, @RecdDt, @RegnDt, @cRemarks);

UPDATE IdMaster set LastId = @cNextId
--END TRY
--BEGIN CATCH
-- IF (XACT_STATE()) = -1
-- Rollback transaction
-- IF (XACT_STATE()) = 1
-- Commit transaction
--END CATCH;
END



When I insert a record like below it works

Insert into RequestMaster 
(requestid, unit, requestno, requestdt, recddt, regndt) values ('20000004','30 WG', '30 WG/LGS/1234/GIFTING', '12-12-2010','12-12-2010', '12-12-2010')


Howevr the SP generates an error

exec InsertRequestMaster
'30 WG', '30 WG/LGS/1234/GIFTING', '12-12-2010','12-12-2010' , '12-12-2010'


Error : Msg 8152, Level 16, State 13, Procedure InsertRequestMaster, Line 41
String or binary data would be truncated.


Help

Thanks

slimt_slimt
Aged Yak Warrior

746 Posts

Posted - 2010-07-14 : 23:11:25
your update statement
"UPDATE IdMaster set LastId = @cNextId"
is missing the "FROM Mytable" part.

when you are making insert, make sure that the values you want to insert into table have the same column type.
for example: your second column in the table is UNIT nchar(10), whereas from procedure you want to pass the variable into this column with type: @cRequestNo nchar(75).

go through all the columns definitions!
Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2010-07-14 : 23:21:52
[code]
INSERT INTO RequestMaster (RequestId, Unit, RequestNo, RequestDt, RecdDt, RegnDt, Remarks)
VALUES (@cNextId, @cRequestno, @cUnit, @RequestDt, @RecdDt, @RegnDt, @cRemarks);
[/code]


KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2010-07-14 : 23:23:17
quote:
Originally posted by slimt_slimt

your update statement
"UPDATE IdMaster set LastId = @cNextId"
is missing the "FROM Mytable" part.


That is a valid syntax


KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page
   

- Advertisement -