How to handle long running procedure(running up to 2-4 hour) from front end in dot net core - sql-server-2008
I have written a procedure which takin too much time up to 4 hour.
when I am calling it from front end in dot net core it shows time out or application get busy.
so I want to know that is there any way by which I can only start the procedure and not waiting for response and procedure executed in back end continuously.
below is my procedure:-
Table MATCSECURITYRAWETL contains 160 thousand data
CREATE Proc UpdateQuaterlyHistory
As
Begin
Declare #PeerGroup Varchar(500),#RARTicker Numeric(18,15),#RARDeltaTicker Numeric(18,15),#RARBenchMark Numeric(18,15),#Result Varchar(10)
,#Qtr1Result Varchar(50),#Qtr2Result Varchar(50),#Qtr3Result VArchar(50),#UserName Varchar(100)='Admin'
Declare #QYear VArchar(10),#QMonth VArchar(10),#QuarterNO VArchar(5), #CUSIP VArchar(150), #Description VArchar(250),#Issuer_Display VArchar(75), #Issuer VArchar(25),
#Ticker VArchar(25), #Symbol VArchar(25), #AssetType VArchar(25), #Category_Display VArchar(100), #Category VArchar(25), #CategoryBoxDesc VArchar(25),
#MorningstarCategory VArchar(25), #StyleCode VArchar(25), #BroadAssetClass VArchar(25), #AssetClass VArchar(25), #ShareClass VArchar(25), #_12b1 VArchar(25),
#ExpenseRatio VArchar(25), #ExpenseRatioGross VArchar(25), #MiniQualPlnsInitPurchAmt VArchar(25), #Min401KAssets VArchar(25), #IsSoftClosed VArchar(25), #ClosedOn VArchar(25),
#Return03Year VArchar(25), #Return05Year VArchar(25), #StdDev03yr VArchar(25), #StdDev05yr VArchar(25), #Sharpe03yr VArchar(25), #Sharpe05yr VArchar(25),
#R203yr VArchar(25), #R205yr VArchar(25), #IsETF VArchar(10), #TradingNotes VArchar(2000), #MaxRedemptionFee VArchar(100),#Rank Numeric(18,0),#TickerInsertDate date
, #Bench_CUSIP VArchar(150), #Bench_Description VArchar(250),#Bench_Issuer_Display VArchar(75), #Bench_Issuer VArchar(25),
#Bench_Ticker VArchar(25), #Bench_Symbol VArchar(25), #Bench_AssetType VArchar(25), #Bench_Category_Display VArchar(25), #Bench_Category VArchar(25), #Bench_CategoryBoxDesc VArchar(25),
#Bench_MorningstarCategory VArchar(25), #Bench_StyleCode VArchar(25), #Bench_BroadAssetClass VArchar(25), #Bench_AssetClass VArchar(25), #Bench_ShareClass VArchar(25), #Bench__12b1 VArchar(25),
#Bench_ExpenseRatio VArchar(25), #Bench_ExpenseRatioGross VArchar(25), #Bench_MiniQualPlnsInitPurchAmt VArchar(25), #Bench_Min401KAssets VArchar(25)
,#Bench_IsSoftClosed VArchar(25), #Bench_ClosedOn VArchar(25),
#Bench_Return03Year VArchar(25), #Bench_Return05Year VArchar(25), #Bench_StdDev03yr VArchar(25), #Bench_StdDev05yr VArchar(25)
,#Bench_Sharpe03yr VArchar(25), #Bench_Sharpe05yr VArchar(25),
#Bench_R203yr VArchar(25), #Bench_R205yr VArchar(25), #Bench_IsETF VArchar(10), #Bench_TradingNotes VArchar(2000), #Bench_MaxRedemptionFee VArchar(100),#Bench_Rank Numeric(18,0)
,#Bench_TickerInsertDate date
Declare #HistoryTicker Varchar(50),#HistoryPeerGroup Varchar(200)
DECLARE TickerList CURSOR FOR
Select Ticker,Category_Display From MATCSECURITYRAWETL where ISNULL(Category_Display,'')<>''
and ISNULL(Ticker,'')<>''
Open TickerList
Fetch Next From TickerList
Into #HistoryTicker,#HistoryPeerGroup
While ##FETCH_STATUS=0
Begin
If Exists(Select ticker from V_MATCSECURITYRAWETL_Filtered where Category_Display=#HistoryPeerGroup)
begin
Select top 1 #PeerGroup=Category_Display From MATCSECURITYRAWETL Where Ticker=#HistoryTicker
Select * Into #LowExp From V_MATCSECURITYRAWETL_Filtered order by [Category_Display]
Select Top 1
ROW_NUMBER() over(partition by [Category_Display] order by cast([ExpenseRatio] as real) asc,cast([Sharpe05yr] as real)) as [CategoryExpenseRank]
,Insert_Date
,[Category_Display]
,[CUSIP]
,[Ticker]
,[Description]
,cast([ExpenseRatio] as varchar) [ExpenseRatio]
,cast([Return05Year] as varchar)[Return05Year]
,cast([StdDev05yr] as varchar)[StdDev05yr]
,cast([R205yr] as varchar) [R205yr]
,cast([Sharpe05yr] as varchar)[Sharpe05yr]
,cast([MiniQualPlnsInitPurchAmt] as varchar)[MiniQualPlnsInitPurchAmt]
,cast([Min401KAssets] as varchar)[Min401KAssets]
,TradingNotes,AssetClass As AssetClass,AssetType As AssetType,Category As Category
,Issuer_Display As Issuer_Display,Issuer As Issuer
,CategoryBoxDesc As CategoryBoxDesc,BroadAssetClass As BroadAssetClass,ShareClass As ShareClass,IsSoftClosed As IsSoftClosed
,ClosedOn As ClosedOn,IsETF As IsETF,MaxRedemptionFee As MaxRedemptionFee,StyleCode As StyleCode,
ExpenseRatioGross As ExpenseRatioGross,MorningstarCategory As MorningstarCategory
,StdDev03yr As StdDev03yr,Sharpe03yr As Sharpe03yr,R203yr As R203yr,'' As _12b1,Return03Year As Return03Year,Symbol As Symbol,'0' As Return01Year,'' As Sharpe01yr
,'' As R201yr,'' As StdDev01yr into #TickerData
from MATCSECURITYRAWETL Where Ticker=#HistoryTicker
Select top 1 * into #TickerData1 from #LowExp where Category_Display=#PeerGroup order by ExpenseRatio,[Category Expense Rank]
Select Top 1
#TickerInsertDate=Insert_Date
,#Rank= [CategoryExpenseRank]
,#Category_Display=[Category_Display]
,#CUSIP=Cast([CUSIP] AS Varchar)
,#Ticker=[Ticker]
,#Description=[Description]
,#ExpenseRatio=cast([ExpenseRatio] as varchar)
,#Return05Year=Cast(case when isnumeric([Return05Year])=1 then Return05Year else '0' end As varchar)
,#StdDev05yr=Cast(case when isnumeric([StdDev05yr])=1 then [StdDev05yr] else '0' end As varchar)
,#R205yr=Cast(case when isnumeric([R205yr])=1 then [R205yr] else '0' end As varchar)
,#Sharpe05yr=Cast(case when isnumeric([Sharpe05yr])=1 then [Sharpe05yr] else '0' end As varchar)
,#MiniQualPlnsInitPurchAmt=[MiniQualPlnsInitPurchAmt]
,#Min401KAssets=[Min401KAssets]
,#TradingNotes=TradingNotes
,#AssetClass=AssetClass
,#AssetType=AssetType
,#Category= Category
,#Issuer_Display=Issuer_Display
,#Issuer=Issuer
,#CategoryBoxDesc=CategoryBoxDesc,#BroadAssetClass=BroadAssetClass,#ShareClass=ShareClass,#IsSoftClosed=IsSoftClosed
,#ClosedOn=ClosedOn,#IsETF= IsETF,#MaxRedemptionFee= MaxRedemptionFee,#StyleCode=StyleCode,
#ExpenseRatioGross=ExpenseRatioGross,#MorningstarCategory= MorningstarCategory
,#StdDev03yr=Cast(case when isnumeric(StdDev03yr)=1 then StdDev03yr else '0' end As varchar)
,#Sharpe03yr=Cast(case when isnumeric(Sharpe03yr)=1 then Sharpe03yr else '0' end As varchar)
,#R203yr=Cast(case when isnumeric(R203yr)=1 then R203yr else '0' end As varchar)
,#Return03Year=Cast(case when isnumeric(Return03Year)=1 then Return03Year else '0' end As varchar)
,#Symbol= Symbol ,#_12b1=_12b1
from #TickerData
Select Top 1
#Bench_TickerInsertDate=Insert_Date
, #Bench_Rank= [Category Expense Rank]
,#Bench_Category_Display=[Category_Display]
,#Bench_CUSIP=[CUSIP]
,#Bench_Ticker=[Ticker]
,#Bench_Description=[Description]
,#Bench_ExpenseRatio=[ExpenseRatio]
,#Bench_Return05Year=case when isnumeric([Return05Year])=1 then [Return05Year] else '0' end
,#Bench_StdDev05yr=case when isnumeric([StdDev05yr])=1 then [StdDev05yr] else '0' end
,#Bench_R205yr=case when isnumeric([R205yr])=1 then [R205yr] else '0' end
,#Bench_Sharpe05yr=case when isnumeric([Sharpe05yr])=1 then [Sharpe05yr] else '0' end
,#Bench_MiniQualPlnsInitPurchAmt=[MiniQualPlnsInitPurchAmt]
,#Bench_Min401KAssets=[Min401KAssets]
,#Bench_TradingNotes=TradingNotes
,#Bench_AssetClass=AssetClass
,#Bench_AssetType=AssetType
,#Bench_Category= Category
,#Bench_Issuer_Display=Issuer_Display
,#Bench_Issuer=Issuer
,#Bench_CategoryBoxDesc=CategoryBoxDesc,#Bench_BroadAssetClass=BroadAssetClass,#Bench_ShareClass=ShareClass,#Bench_IsSoftClosed=IsSoftClosed
,#Bench_ClosedOn=ClosedOn,#Bench_IsETF= IsETF,#Bench_MaxRedemptionFee= MaxRedemptionFee,#Bench_StyleCode=StyleCode
,#Bench_ExpenseRatioGross=ExpenseRatioGross,#Bench_MorningstarCategory= MorningstarCategory
,#Bench_StdDev03yr=case when isnumeric(StdDev03yr)=1 then StdDev03yr else '0' end
,#Bench_Sharpe03yr=case when isnumeric(Sharpe03yr)=1 then Sharpe03yr else '0' end
,#Bench_R203yr= case when isnumeric(R203yr)=1 then R203yr else '0' end
,#Bench_Return03Year=case when isnumeric(Return03Year)=1 then Return03Year else '0' end
,#Bench_Symbol= Symbol ,#Bench__12b1=_12b1
from #TickerData1
set #RARTicker=dbo.CalculateRAR(#Return05Year,#Return03Year,0,#StdDev05yr,#StdDev03yr,0)
set #RARBenchMark=dbo.CalculateRAR(#Bench_Return05Year,#Bench_Return03Year,0,#Bench_StdDev05yr,#Bench_StdDev03yr,0)
set #RARDeltaTicker=dbo.CalculateRARDelta(#RARBenchMark,#Return05Year,#Return03Year,0,#StdDev05yr,#StdDev03yr,0)
set #QYear=YEAR(GETDATE())
set #QMonth=Month(GETDATE())
set #QuarterNO=dbo.GetQuarter(#QMonth)
if(Cast(#RARDeltaTicker AS Numeric(18,4))<=0)
begin
set #Result='PASS'
end
else
begin
set #Result='CAUTION'
end
if Exists(Select ID From QuarterlyUserTickerDataMaster_Clone Where QYear=#QYear and QuarterNO=#QuarterNO And Ticker=#Ticker)
begin
Declare #QID Numeric(18,0)
Select #QID=ID From QuarterlyUserTickerDataMaster_Clone Where QYear=#QYear and QuarterNO=#QuarterNO And Ticker=#Ticker
Update QuarterlyUserTickerDataMaster_Clone Set QYear=#QYear,QMonth=#QMonth,QuarterNO=#QuarterNO,CUSIP=#CUSIP,Description=#Description,Issuer_Display=#Issuer_Display,Issuer=#Issuer
,Ticker=#Ticker,Symbol=#Symbol,AssetType=#AssetType,Category_Display=#Category_Display,Category=#Category,CategoryBoxDesc=#CategoryBoxDesc,MorningstarCategory=#MorningstarCategory
,StyleCode=#StyleCode,BroadAssetClass=#BroadAssetClass,AssetClass=#AssetClass,ShareClass=#ShareClass,_12b1=#_12b1,ExpenseRatio=#ExpenseRatio,ExpenseRatioGross=#ExpenseRatioGross
,MiniQualPlnsInitPurchAmt=#MiniQualPlnsInitPurchAmt,Min401KAssets=#Min401KAssets,IsSoftClosed=#IsSoftClosed,ClosedOn=#ClosedOn,Return03Year=#Return03Year,Return05Year=#Return05Year
,StdDev03yr=#StdDev03yr,StdDev05yr=#StdDev05yr,Sharpe03yr=#Sharpe03yr,Sharpe05yr=#Sharpe05yr,R203yr=#R203yr,R205yr=#R205yr,IsETF=#IsETF,TradingNotes=#TradingNotes
,MaxRedemptionFee= #MaxRedemptionFee,UpdateBy=#UserName,UpdatedDate=GETDATE(),QtrResult=#Result,RAR=#RARTicker,RARDelta=#RARDeltaTicker,BenchTicker=#Bench_Ticker,BenchTickerRAR=#RARBenchMark
Where ID=#QID
end
else
begin
insert into QuarterlyUserTickerDataMaster_Clone(QYear,QMonth,QuarterNO,CUSIP,Description,Issuer_Display,Issuer,Ticker,Symbol,AssetType,Category_Display,Category
,CategoryBoxDesc,MorningstarCategory,StyleCode,BroadAssetClass,AssetClass,ShareClass,_12b1,ExpenseRatio,ExpenseRatioGross,MiniQualPlnsInitPurchAmt,Min401KAssets
,IsSoftClosed,ClosedOn,Return03Year,Return05Year,StdDev03yr,StdDev05yr,Sharpe03yr,Sharpe05yr,R203yr,R205yr,IsETF,TradingNotes,MaxRedemptionFee,CreateBy,CreatedDate,QtrResult
,BenchTicker,RARDelta,RAR,BenchTickerRAR)
values(#QYear,#QMonth,#QuarterNO,#CUSIP,#Description,#Issuer_Display,#Issuer,#Ticker,#Symbol,#AssetType,#Category_Display,#Category
,#CategoryBoxDesc,#MorningstarCategory,#StyleCode,#BroadAssetClass,#AssetClass,#ShareClass,#_12b1,#ExpenseRatio,#ExpenseRatioGross,#MiniQualPlnsInitPurchAmt,#Min401KAssets
,#IsSoftClosed,#ClosedOn,#Return03Year,#Return05Year,#StdDev03yr,#StdDev05yr,#Sharpe03yr,#Sharpe05yr,#R203yr,#R205yr,#IsETF,#TradingNotes,#MaxRedemptionFee,#UserName,GETDATE(),#Result
,#Bench_Ticker,#RARDeltaTicker,#RARTicker,#RARBenchMark)
end
Declare #QYearList Varchar(10),#QuarterNoList Varchar(10),#Res Varchar(10)='',#res1 VArchar(10)
,#QtrYear1 Varchar(20),#QtrYear2 Varchar(20),#QtrYear3 Varchar(20)
,#res2 VArchar(10),#res3 VArchar(10),#Count int=0
DECLARE QTRList CURSOR FOR
Select QYear,QNo from dbo.GetLastThreeQuarter(#QYear,#QuarterNO)
OPEN QTRList
FETCH NEXT FROM QTRList
INTO #QYearList,#QuarterNoList
WHILE ##FETCH_STATUS = 0
BEGIN
Set #Count=#Count+1
set #Res=null
Select #Res=isnull(QtrResult,'') From QuarterlyUserTickerDataMaster_Clone Where QYear=#QYearList And QuarterNO=#QuarterNoList And Ticker=#Ticker
if(#Count=1)
begin
Set #res1=ISNULL(#Res,'NA')
Set #QtrYear1=ISNULL(#QYearList,'NA')+' QTR- '+ISNULL(#QuarterNoList,'')
end
else if(#Count=2)
begin
Set #res2=ISNULL(#Res,'NA')
Set #QtrYear2=ISNULL(#QYearList,'NA')+' QTR- '+ISNULL(#QuarterNoList,'')
end
else if(#Count=3)
begin
Set #res3=ISNULL(#Res,'NA')
Set #QtrYear3=ISNULL(#QYearList,'NA')+' QTR- '+ISNULL(#QuarterNoList,'')
end
FETCH NEXT FROM QTRList
INTO #QYearList,#QuarterNoList
END
CLOSE QTRList;
DEALLOCATE QTRList;
Drop table #TickerData
Drop table #TickerData1
Drop table #LowExp
end
FETCH NEXT FROM TickerList
INTO #HistoryTicker ,#HistoryPeerGroup
END
CLOSE TickerList;
DEALLOCATE TickerList;
End
Related
SQL - Procedure function
Trying to create a Procedure to (Insert, Delete and, Update) values in employee_details. CREATE DEFINER=`root`#`localhost` ALTER PROCEDURE `alter_employeedetails`(in employee_id int(11), employee_name VARCHAR(30), employee_join_date date, employee_desgination varchar(30), employee_salary bigint(20), employee_address varchar(30), employee_contact varchar(30), employee_email_id varchar(30) BEGIN IF #StatementType = 'Insert' BEGIN insert into employee_details values (employee_id, employee_name, employee_join_date, employee_desgination, employee_salary, employee_address, employee_contact, employee_email_id) END IF #StatementType = 'Update' BEGIN UPDATE employee_details SET (employee_name = #employee_name, employee_join_date = #employee_join_date, employee_designation = #employee_desgination, employee_salary = #employee_salary, employee_address = #employee_address, employee_contact = #employee_contact, employee_email_id = #employee_email_id) WHERE employee_id = #employee_id END else IF #StatementType = 'Delete' BEGIN DELETE FROM employee_details where employee_id = #employee_id END end
Quite a few errors in that code... You forgot to prefix all the parameters with the "#" symbol. Forgot to include "#StatementType" as a parameter. Update had brackets around it. You cannot specify int(11) (employee_id) or bigint(20) (salary). It's either int / bigint (you don't specify the length for int/bigint datatypes). And is salary correct as bigint? MSSQL has a "money" datatype, or you could use decimal(8,2) or something similar. You might be multiplying the salary by 100 to shift the decimal place for all I know? When inserting, do you really want to insert a employee Id? This would normally be an auto-incrementing primary key Insert statement missing the fields you were populating. Required if using the "values" keyword like you had specified. Hopefully this is closer to what you want. ALTER PROCEDURE alter_employeedetails (#StatementType as varchar(25), #employee_id int, #employee_name VARCHAR(30), #employee_join_date date, #employee_designation varchar(30), #employee_salary bigint, #employee_address varchar(30), #employee_contact varchar(30), #employee_email_id varchar(30)) AS BEGIN IF #StatementType = 'Insert' BEGIN insert into employee_details (employee_id, employee_name, employee_join_date, employee_designation, employee_salary, employee_address, employee_contact, employee_email_id) values (#employee_id, #employee_name, #employee_join_date, #employee_designation, #employee_salary, #employee_address, #employee_contact, #employee_email_id) END ELSE IF #StatementType = 'Update' BEGIN UPDATE employee_details SET employee_name = #employee_name, employee_join_date = #employee_join_date, employee_designation = #employee_designation, employee_salary = #employee_salary, employee_address = #employee_address, employee_contact = #employee_contact, employee_email_id = #employee_email_id WHERE employee_id = #employee_id END ELSE IF #StatementType = 'Delete' BEGIN DELETE FROM employee_details where employee_id = #employee_id END END
Codeigniter with Stored Procedure
I want to save with Stored Procedure. Please check my script first `USE [Payroll] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER Procedure [dbo].[ResignSave] ( #ResignCode varchar(50), #Nip Varchar(50), #Keterangan Varchar(50), #ResignDate Varchar(50), #CreatedBy varchar(50), #CreatedDate date, #msg varchar(25) = NULL ) AS BEGIN Begin Try set #ResignCode = (select case when right(max(ResignCode),7) is null then 'RC0000001' else ('RC' + RIGHT('0000000' + cast(right(max(ResignCode),7) + 1 as nvarchar),7)) end ResignCode from Resign) INSERT INTO Resign(ResignCode,Nip, Keterangan, ResignDate, CreatedBy,CreatedDate) VALUES(#ResignCode,#Nip,#Keterangan, #ResignDate,#CreatedBy,GETDATE()) end try Begin Catch Select ERROR_NUMBER() as ErrorNumber, ERROR_MESSAGE() as ErrorMessage End Catch End ` My Stored Procedure working fine. My question is, is there anyway to checking the input if it's exists in my table then set it to my #msg.
You might be looking for below code. ALTER Procedure [dbo].[ResignSave] ( #ResignCode varchar(50), #Nip Varchar(50), #Keterangan Varchar(50), #ResignDate Varchar(50), #CreatedBy varchar(50), #CreatedDate date, #msg varchar(25) = NULL ) AS BEGIN Begin Try if exists (select * from Resign where ResignCode = #ResignCode and Nip = #Nip and ResignDate = #ResignDate) then BEGIN set #msg = 'Record already exists' select #msg AS ProcResult END set #ResignCode = (select case when right(max(ResignCode),7) is null then 'RC0000001' else ('RC' + RIGHT('0000000' + cast(right(max(ResignCode),7) + 1 as nvarchar),7)) end ResignCode from Resign) INSERT INTO Resign(ResignCode,Nip, Keterangan, ResignDate, CreatedBy,CreatedDate) VALUES(#ResignCode,#Nip,#Keterangan, #ResignDate,#CreatedBy,GETDATE()) SELECT 'Insert Successful' AS ProcResult end try Begin Catch Select 'Insert Failed:' + cast(ERROR_NUMBER() as varchar) + ERROR_MESSAGE() AS ProcResult End Catch End If this is what you are looking for, you don't need the #msg parameter. juts execute the procedure and get the returned result set
MySQL function definition - 'BEGIN' (begin) is not a valid input at this position
I typed this up in verbatim from a textbook on MySQL. There's a red X denoting an error on the line BEGIN with the text 'BEGIN' (begin) is not a valid input at this position. The database used is View Ridge Gallery. Is there any obvious issues with the code? DROP FUNCTION IF EXISTS InsertCustomerAndInterests; DELIMITER $$ CREATE FUNCTION InsertCustomerAndInterests ( newLastName Char(25), newFirstName Char(25), newAreaCode Char(3), newPhoneNumber Char(8), newEmail Varchar(100), newNationality Char(30) ) BEGIN DECLARE varRowCount Int; DECLARE varArtistID Int; DECLARE varCustomerID Int; DECLARE done Int DEFAULT 0; DECLARE AristCursor CURSOR FOR SELECT AristID FROM ARTIST WHERE Nationality=newNationality; DECLARE continue HANDLER FOR NOT FOUND SET done = 1; #Check to see if Customer already exists in datebase SELECT Count(*) INTO varRowCount FROM CUSTOMER WHERE LastName = newLastName AND FirstName = newFirstName AND AreaCode = newAreaCode AND PhoneNumber = newPhoneNumber AND Email = newEmail; #IF (varRowCount > 0 ) THEN Customer already exists IF (varRowCount > 0 ) THEN ROLLBACK; SELECT 'Customer already exists'; END IF; #IF (varRowCount = 0 ) THEN Customer does not exist. #Insert new Customer data IF (varRowCount = 0) THEN INSERT INTO CUSTOMER (LastName, FirstName, AreaCode, PhoneNumber, Email) VALUES (newLastName, newFirstName, newAreaCode, newPhoneNumber, newEmail); #Get new CustomerID surrogate key value SET varCustomerID = LAST_INSERT_ID(); #Create intersection record for each appropriate Arist. OPEN AristCursor; REPEAT FETCH ArtistCursor INTO varArtistArtistID; IF NOT done THEN INSERT INTO CUSTOMER_ARTIST_INT (ArtistID, CustomerID) VALUES (varArtistID, varCustomerID); END IF; UNTIL done END REPEAT; CLOSE ArtistCursor; SELECT 'New customer and artist interest data added to database.' AS InsertCustomerAndInterestsResults; END IF; END $$ DELIMITER ;
You need to add return type before begin and must return value from the function. DELIMITER $$ DROP FUNCTION IF EXISTS `InsertCustomerAndInterests`$$ CREATE FUNCTION `InsertCustomerAndInterests`( newLastName CHAR(25), newFirstName CHAR(25), newAreaCode CHAR(3), newPhoneNumber CHAR(8), newEmail VARCHAR(100), newNationality CHAR(30) ) RETURNS INT(11) # you missed return type here. BEGIN DECLARE done INT DEFAULT 0; RETURN done; # must match with return type END$$ DELIMITER ;
Since all functions need a return value and return type, you are missing the RETURNS clause after declaring your parameters. See CREATE FUNCTION
Insert into Table Variable getting Column name or number of supplied values does not match table definition
DECLARE #myTemp TABLE (Item Varchar(10) Not Null, [Description Varchar(30) Not Null, LonDescription Varchar(50), [Level] Char(1), LevelDesc Varchar(15), GID Varchar(16), [Min] Int, [Max] Int, QTY Int, QoO Int) FETCH NEXT FROM cAreaLocationItems Into #citem,#cDesc,#cLDesc,#cLVL,#cLVLDesc,#cGID,#cMin,#cMax,#cqty IF ##FETCH_STATUS <> 0 -- We're out of items BREAK WHILE ##FETCH_STATUS = 0 Begin Declare #QoO Int SELECT #QoO = SUM(QtyReqd - QtyActual) FROM abc.tblorders WHERE (ItemNumber = #cItem) AND (Status <> '4') And Bin = #Location GROUP BY ItemNumber, UPC, [Level], Description, Bin If #QoO = Null Set #QoO = 0 Insert into #myTemp values(#cItem,#cDesc,#cLDesc,#clvl,#cLVLDesc,#cGid,#cMin,#cMax,#cQTy,#QoO) FETCH NEXT FROM cAreaLocationItems Into #citem,#cDesc,#cLDesc,#cLVL,#cLVLDesc,#cGID,#cMin,#cMax,#cqty end Get the error executed stored procedure on the insert into #myTemp table variable defined above. Table says 10 columns and insert has ten values. Any help?
Try to specify the column names in the insert query like this: Insert into #myTemp (Item Varchar,[Description,LonDescription,Level],LevelDesc,GID,[Min],[Max],QTY,QoO) values(#cItem,#cDesc,#cLDesc,#clvl,#cLVLDesc,#cGid,#cMin,#cMax,#cQTy,#QoO) It helps you to avoid error when you add new column into the table
Why is it the output is NULL when i run this mysql programming?
In this code, i'm trying to output some data when the ci_ty is 'QS'. But the out put is NULL. Can someone help me figure this out? delimiter // create procedure GetFnameAndLname( IN ci_ty VARCHAR(45), OUT p_id INT, OUT f_name VARCHAR(45), OUT l_name VARCHAR(45)) begin select city into ci_ty from fathi.personal; if ci_ty = 'QS' then select idpersonal,fname,lname into p_id,f_name,l_name from fathi.personal; end if; end call GetFnameAndLname('QS',#p_id,#f_name,#l_name); select #p_id,#f_name,#l_name;