Hi,
 I have 2 tables like below
 CREATE TABLE Location
 (
 LocationID int NOT NULL,
 LocationName char (30) NOT NULL UNIQUE,
 CONSTRAINT PK_Location PRIMARY KEY (LocationID)
 )
 CREATE TABLE Parts
 (
 PartID int NOT NULL,
 LocationID int NOT NULL,
 PartName char (30) NOT NULL,
 CONSTRAINT PK_Parts PRIMARY KEY (PartID),
 CONSTRAINT FK_PartsLocation FOREIGN KEY (Location ID)
 REFERENCES Location (LocationID)
 )
 I have created a stored procedure to delete all of partid on a certain
 location as shown below.
 CREATE PROCEDURE sp_DeleteLocation @.LocName char(30) AS
 BEGIN
 DECLARE @.PartID int
 DECLARE crs_Parts CURSOR FOR
 SELECT p.PartID
 FROM Parts AS p INNER JOIN Location AS 1
 ON p.LocationID = @.LocName
 WHERE l.LocationName = @.LocName
 OPEN crs_Parts
 FETCH NEXT FROM crs_Parts INTO @.PartID
 WHILE (@.@.FETCH_STATUS <> -1)
 BEGIN
 DELETE Parts WHERE CURRENT OF crs_Parts
 FETCH NEXT FROM crs_Parts INTO @.PartID
 END
 CLOSE crs_Parts
 DEALLOCATE crs_Parts
 DELETE Location WHERE LocationName = @.LocName
 END
 My Question is how to replace the cursor operation in the stored
 procedure by using single DELETE statement?
 Thanks
 Robert LieHi Robert
Jusr the query this way,
DELETE Parts
FROM Parts INNER JOIN Location
 ON ON Parts.LocationID = Location.LocationID
 WHERE Location.LocationName = @.LocName
hope this is the one that you are looking for:
thanks and regards
Chandra
"Robert Lie" wrote:
> Hi,
> I have 2 tables like below
> CREATE TABLE Location
> (
> LocationID int NOT NULL,
> LocationName char (30) NOT NULL UNIQUE,
> CONSTRAINT PK_Location PRIMARY KEY (LocationID)
> )
>
> CREATE TABLE Parts
> (
> PartID int NOT NULL,
> LocationID int NOT NULL,
> PartName char (30) NOT NULL,
> CONSTRAINT PK_Parts PRIMARY KEY (PartID),
> CONSTRAINT FK_PartsLocation FOREIGN KEY (Location ID)
> REFERENCES Location (LocationID)
> )
>
> I have created a stored procedure to delete all of partid on a certain
> location as shown below.
> CREATE PROCEDURE sp_DeleteLocation @.LocName char(30) AS
> BEGIN
> DECLARE @.PartID int
> DECLARE crs_Parts CURSOR FOR
> SELECT p.PartID
> FROM Parts AS p INNER JOIN Location AS 1
> ON p.LocationID = @.LocName
> WHERE l.LocationName = @.LocName
> OPEN crs_Parts
> FETCH NEXT FROM crs_Parts INTO @.PartID
> WHILE (@.@.FETCH_STATUS <> -1)
> BEGIN
> DELETE Parts WHERE CURRENT OF crs_Parts
> FETCH NEXT FROM crs_Parts INTO @.PartID
> END
> CLOSE crs_Parts
> DEALLOCATE crs_Parts
> DELETE Location WHERE LocationName = @.LocName
> END
> My Question is how to replace the cursor operation in the stored
> procedure by using single DELETE statement?
> Thanks
> Robert Lie
>
Monday, February 27, 2012
Help: Query
Labels:
below,
char,
constraint,
create,
database,
int,
location,
locationid,
locationname,
microsoft,
mysql,
null,
oracle,
pk_location,
query,
server,
sql,
table,
tables,
unique
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment