की अपेक्षा शुरू होने के करीब एक स्टोर प्रक्रिया बनाते हैं। यदि पहली बार तालिका मेरे डीबी में है तो मैं एक टेबल की जांच करता हूं, फिर मैं इसे छोड़ देता हूं और नई टेबल बना देता हूं, दूसरा मैं एसपी के भीतर एक स्टोर प्रक्रिया बनाता हूं जहां मैं तालिका में मूल्य डाल रहा हूं। मेरी समस्या यह है कि जब मैं स्टोर प्रक्रिया में स्टोर प्रक्रिया भाग जोड़ता हूं तो मुझे त्रुटि incorrect syntax near begin expecting EXTERNAL
मिल रही है। नीचे मेरी दुकान प्रक्रिया है क्या आप कृपया मेरी मदद कर सकते हैं जहां मैं गलत कर रहा हूं।बाहरी वाक्यविन्यास बाहरी
ALTER PROCEDURE myProcedure
AS
BEGIN
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ATSROUTES]') AND type in (N'U'))
DROP TABLE [dbo].[ATSROUTES]
CREATE TABLE [ATSROUTES](
[zip] [varchar](255) NULL,
[route] [varchar](255) NULL,
[drivernum] [varchar](255) NULL,
[altserviceid] [varchar](255) NULL,
[localorldrvnum] [varchar](255) NULL,
[pickupzone] [varchar](255) NULL,
[distcenter] [varchar](255) NULL,
[altdispid] [varchar](255) NULL,
[id] [int] NULL);
BULK INSERT ATSROUTES FROM 'C:\Routes\my1.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateroute_sp]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].updateroute_sp
CREATE procedure updateroute_sp
AS
BEGIN
DECLARE @route varchar(255)
DECLARE @zip varchar(255)
DECLARE @routeid varchar(255)
DECLARE @distcenter varchar(255)
DECLARE @altdispid varchar(255)
DECLARE @ERR_NOTFOUND varchar(2000)
DECLARE db_Cursor CURSOR FOR SELECT zip, [route] from ATSROUTES
OPEN db_Cursor
FETCH NEXT FROM db_Cursor INTO @zip,@route
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@route is not null and @route <> '')
BEGIN
IF NOT EXISTS (SELECT * FROM routenames WHERE routename = @ROUTE)
BEGIN
EXEC GETNEWRECID2 'ROUTENAMES','ROUTEID','ROUTENAMES',@ROUTEID
insert into routenames (routeid,routename) values (@routeid,@ROUTE);
END
END
FETCH NEXT FROM db_Cursor INTO @zip,@route
END
CLOSE db_Cursor
DEALLOCATE db_Cursor
END
EXEC updateroute_sp
DROP PROCEDURE updateroute_sp
UPDATE ATSROUTES set id = (select routeid from routenames where routename = [route]);
UPDATE ATSROUTES set drivernum =LTRIM(RTRIM(drivernum));
END
धन्यवाद।
आप '*' myProcedure' के भीतर से * updateroute_sp' बनाने का प्रयास कर रहे हैं? यदि ऐसा है, तो आपको गतिशील एसक्यूएल का उपयोग करना होगा, लेकिन मुझे सच में यकीन नहीं है कि आप एक प्रक्रिया के भीतर एक ऑफ ऑफ प्रक्रिया (एक टेबल और संग्रहित प्रो बनाने) को कैसे समाहित करने की कोशिश कर रहे हैं। यदि आप यह समझा सकते हैं कि आप ऐसा क्यों कर रहे हैं, तो हम कुछ बेहतर सुझाव देने में सक्षम हो सकते हैं। –
@Damien_The_Unbeliever धन्यवाद मैं समझता हूँ कि यह इस सपा के तहत सपा बनाने के लिए अच्छा तार्किक नहीं है, लेकिन मेरे मुवक्किल इस चाहते हैं, क्योंकि मैं SQL सर्वर के Sybase से इस कोड को परिवर्तित कर रहा हूँ – Abhishek