|
|
|
สอบถามการเขียน FUNCTION ใน sql ครับ พอดีเขียนแล้วมี error ไม่รู้ว่าผิดตรงไหนช่วยแนะนำให้ด้วยครับ |
|
|
|
|
|
|
|
Code (SQL)
ALTER FUNCTION [dbo].[Cal_All_Electricity]
(
@total FLOAT(53),
@nElecCostRate FLOAT(53),
@nServiceCost FLOAT(53),
@nFt FLOAT(53),
@nVat FLOAT(53),
@nele_type FLOAT(53),
@nfirst_unit FLOAT(53),
@nsecond_unit FLOAT(53)
)
RETURNS FLOAT(53)
AS
BEGIN
DECLARE @electric_base_cost FLOAT(53),
@electric_Ft_cost FLOAT(53),
@vat_cost FLOAT(53),
@elecCost FLOAT(53),
@unit1 FLOAT(53),
@cal_nfirst FLOAT(53),
@unit2 FLOAT(53),
@cal_nsecond FLOAT(53),
@cal_nexceed FLOAT(53),
@cal_all_ele FLOAT(53),
@cal_ft FLOAT(53),
@cal_vat FLOAT(53),
@cal_total_ele FLOAT(53)
IF (@nele_type = 6.1)
SET @electric_base_cost = ((@total * @nElecCostRate) + @nServiceCost);
SET @electric_Ft_cost = (@total * @nFt * 0.01);
SET @vat_cost = ((@electric_base_cost + @electric_Ft_cost) * @nVat);
SET @elecCost = (@electric_base_cost + @electric_Ft_cost + @vat_cost);
RETURN @elecCost
ELSE IF (@nele_type = 1.2)
IF(@total > 150){
SET @unit1 = (@total - @nfirst_unit);
SET @cal_nfirst = (@nfirst_unit * 3.2484);
}ELSE{
SET @cal_nfirst = (@total * 3.2484);
}
IF(@unit1 >= 250){
SET @unit2 = (@unit1 - @nsecond_unit);
SET @cal_nsecond = (@nsecond_unit * 4.2218);
}ELSE{
SET @cal_nsecond = (@unit1 * 4.2218);
}
IF(@unit2 >= 1){
SET @cal_nexceed = (@unit2 * 4.4217);
}
SET @cal_all_ele = (@cal_nfirst + @cal_nsecond + @cal_nexceed + @nServiceCost);
SET @cal_ft = (@total * (@nFt/100));
SET @cal_vat = ((@cal_all_ele + @cal_ft) * @nVat);
SET @cal_total_ele = (@cal_all_ele + @cal_ft + @cal_vat);
RETURN @cal_total_ele
END
พอกด save ขึ้น error แบบนี้ต้องแก้ยังไงครับ ช่วยแนะนำด้วยครับ ขอบคุณครับ
Error:0, Severity:0, State:0
Syntax error, permission violation, or other nonspecific error
Tag : PHP, Ms SQL Server 2012
|
|
|
|
|
|
Date :
2017-10-17 11:49:13 |
By :
weekung072 |
View :
627 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนที่ Create ได้ใช่ไหม๊ครับ ลองนั่งลบบรรทัดที่คาดว่าจะมีปัญหาออกก่อนครับ
|
|
|
|
|
Date :
2017-10-18 13:51:53 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (SQL)
ELSE IF (@nele_type = 1.2)
IF(@total > 150){
SET @unit1 = (@total - @nfirst_unit);
SET @cal_nfirst = (@nfirst_unit * 3.2484);
}ELSE{
SET @cal_nfirst = (@total * 3.2484);
}
IF(@unit1 >= 250){
SET @unit2 = (@unit1 - @nsecond_unit);
SET @cal_nsecond = (@nsecond_unit * 4.2218);
}ELSE{
SET @cal_nsecond = (@unit1 * 4.2218);
}
IF(@unit2 >= 1){
SET @cal_nexceed = (@unit2 * 4.4217);
}
SET @cal_all_ele = (@cal_nfirst + @cal_nsecond + @cal_nexceed + @nServiceCost);
SET @cal_ft = (@total * (@nFt/100));
SET @cal_vat = ((@cal_all_ele + @cal_ft) * @nVat);
SET @cal_total_ele = (@cal_all_ele + @cal_ft + @cal_vat);
RETURN @cal_total_ele
ถ้าผมลบ ทั้งก้อนนี้หมด จะไม่มีปัญหาครับ แต่จริงๆๆผมต้องการใช้ ทั้งหมดนี้เลยไม่รู้ว่าสาเหตุมาจากอะไรครับ
|
|
|
|
|
Date :
2017-10-19 09:22:25 |
By :
weekung072 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
syntax
กรณีใน มีหลายคำสั่ง หลัง then else ต้องมี begin end ครอบ
ไม่ใช้ วงเล็บปีกกา
Code (SQL)
if condition
begin
command1;
command2;
end
else
begin
command1;
command2;
end;
|
|
|
|
|
Date :
2017-10-19 10:17:32 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ ทำได้แล้วครับ
|
|
|
|
|
Date :
2017-10-19 10:39:37 |
By :
weekung072 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|