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;