2016-01-17 36 views
-1
CREATE TABLE [dbo].[TB_CUSTPARAM](
    [CUSTTYPE] [varchar](10) NOT NULL, 
    [PARAMETER] [varchar](20) NULL, 
    [DATATYPE] [int] NULL, 
    [TEXT_PARAM] [varchar](50) NULL, 
    [RANGE_FROM] [int] NULL, 
    [RANGE_TO] [int] NULL, 
    [RATING] [int] NULL, 
    [DESCRIPTION] [varchar](50) NULL, 
    [TABLENAME] [varchar](50) NULL, 
    [COLUMNNAME] [varchar](100) NULL, 
    [SQLQUERY] [varchar](1000) NULL, 
    [SRNO] [int] NOT NULL, 
    [WEIGHT] [numeric](4, 0) NULL, 
    [RANGE_VIEW_NAME] [varchar](200) NULL 
) ON [PRIMARY] 
------------------------------------------------------------------------- 
CREATE TABLE [dbo].[TEMP_CUSTPARAM](
    [CUSTNO] [varchar](50) NOT NULL, 
    [RATING] [numeric](18, 0) NULL, 
CONSTRAINT [PK_TEMP_CUSTPARAM] PRIMARY KEY CLUSTERED 
(
    [CUSTNO] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] 
) ON [PRIMARY] 

------------------------------------------------------------------- 
CREATE TABLE [dbo].[TB_CUSTPERSONAL](
    [CUSTNO] [varchar](50) NOT NULL, 
    [SEX] [varchar](30) NULL, 
    [MARITALSTATUS] [varchar](30) NULL, 
    [INCOMESOURCE] [int] NULL, 
    [OCCUPATION] [varchar](30) NULL, 
    [EMPLOYERSNAME1] [varchar](50) NULL, 
    [EMPLOYERPHNO1] [varchar](15) NULL, 
    [EMPLOYERADDR1] [varchar](100) NULL, 
    [YEARSOFSERVICE1] [numeric](30, 2) NULL, 
    [EMPLOYERSNAME2] [varchar](50) NULL, 
    [EMPLOYERPHNO2] [varchar](15) NULL, 
    [EMPLOYERADDR2] [varchar](100) NULL, 
    [YEARSOFSERVICE2] [numeric](30, 2) NULL, 
    [TOTALYEAROFSERVICE] [numeric](30, 2) NULL, 
    [NOOFDEPENDANTS] [varchar](10) NULL, 
    [CURRANNUALINCOME] [numeric](30, 3) NULL, 
    [QUALIFICATION] [varchar](30) NULL, 
    [DESIGNATION] [varchar](30) NULL, 
    [VERIFICATIONTYPE] [int] NULL, 
    [PURPOSEOFACCOUNT] [varchar](50) NULL, 
    [REFEREDBY] [varchar](50) NULL, 
    [ANTICIPATEDACTIVITY] [varchar](50) NULL, 
    [NI_NUMBER] [varchar](35) NULL, 
    [IDENTIFICATION_MARK] [varchar](50) NULL, 
    [PKID] [varchar](50) NULL, 
    [TXNTURNOVER] [varchar](50) NULL, 
    [MONTHLY_INCOME] [numeric](30, 3) NULL, 
    [FATHER_SPOUSE_NAME] [varchar](100) NULL, 
    [MOBILENO] [varchar](30) NULL, 
    [EMPLOYERTYPE] [varchar](30) NULL, 
    [PROFESSIONTYPE] [varchar](30) NULL, 
    [BUSINESSTYPE] [varchar](30) NULL, 
    [AREAOFOCCUPATION] [varchar](30) NULL, 
    [EXPTXNPERQTR] [varchar](30) NULL, 
    [TYPEOF4WHEELEROWN] [varchar](30) NULL, 
    [NATIONALITY] [varchar](50) NULL, 
    [MINORYN] [varchar](1) NULL, 
    [SRCITIZENYN] [varchar](1) NULL, 
    [FORM60_61YN] [varchar](1) NULL, 
    [PASSPORT_NO] [varchar](50) NULL, 
    [IF_SELF_EMPLOYED] [varchar](50) NULL, 
    [IF_BUSINESS] [varchar](50) NULL, 
    [SOURCE_OF_INCOME] [varchar](50) NULL, 
    [YOU_LIVE_IN] [varchar](50) NULL, 
    [YOUR_RESIDENCE_IS] [varchar](50) NULL, 
    [DI_DATE] [datetime] NULL, 
    [REC_UPDATEDT] [datetime] NULL, 
    [DAILY_INCOME] [varchar](50) NULL, 
    [EMPLOYERPHNO] [varchar](50) NULL, 
    [EMPLOYERADDR] [varchar](50) NULL, 
    [YEARSOFSERVICE] [varchar](50) NULL, 
    [FIRSTNAME] [varchar](50) NULL, 
    [MIDDLENAME] [varchar](50) NULL, 
    [LASTNAME] [varchar](50) NULL, 
    [PLACEOFBIRTH] [varchar](50) NULL, 
    [PASSPORT_YN] [varchar](50) NULL, 
    [EMIRATESID_YN] [varchar](50) NULL, 
    [RESIVISA_YN] [varchar](50) NULL, 
    [SALCERTIFICATE_YN] [varchar](50) NULL, 
    [EMPLOYMENT_STATUS] [varchar](50) NULL, 
    [EMPLOYERSNAME] [varchar](50) NULL, 
    [E_ADDRESS2] [varchar](50) NULL, 
    [E_ADDRESS3] [varchar](50) NULL, 
    [E_COUNTRY] [varchar](50) NULL, 
    [YEAROFSERVICE] [varchar](50) NULL, 
    [DEPENDENT_CHILDREN] [varchar](50) NULL, 
    [SPOUSE_EMP_STATUS] [varchar](50) NULL, 
    [ACCOMODATION] [varchar](50) NULL, 
    [PROFESSION] [varchar](50) NULL, 
    [RESVISANO] [varchar](50) NULL, 
    [RESVISAISSUEPLACE] [varchar](50) NULL, 
    [RESVISAISSUEDATE] [varchar](50) NULL, 
    [RESVISAEXPIRYDATE] [varchar](50) NULL, 
    [EMP_CODE] [varchar](50) NULL, 
    [PREV_EMPLOYER] [varchar](50) NULL, 
    [EMP_JOIN_DATE] [varchar](50) NULL, 
    [ACCOUNTOPERATEDBY] [varchar](50) NULL, 
    [RESIDENT_STATUS] [varchar](50) NULL, 
    [CREDIT_CARDNO] [varchar](50) NULL, 
    [ISSED_BY] [varchar](50) NULL, 
    [EXPIRY_DATE] [varchar](50) NULL, 
    [SCHEME_NAME] [varchar](50) NULL, 
    [TENURE_SCHEME] [varchar](50) NULL, 
    [INSTALLAMT_SCHEME] [varchar](50) NULL, 
    [NOOFINSTALL_SCHEME] [varchar](50) NULL, 
    [MATURITYAMT_SCHEME] [varchar](50) NULL, 
    [MONTHLYAMT_SCHEME] [varchar](50) NULL, 
    [TERM_DEPOSIT] [varchar](50) NULL, 
    [DATE_OF_ISSUE] [varchar](50) NULL, 
    [DATE_OF_MATURITY] [varchar](50) NULL, 
    [TERMDEPO_AMOUNT] [varchar](50) NULL, 
    [TERMDEPO_RENEWAL] [varchar](50) NULL, 
    [TERMDEPO_RATE] [varchar](50) NULL, 
    [INTIAL_DEPOSIT] [varchar](50) NULL, 
    [SPECIAL_INST] [varchar](50) NULL, 
    [NAME_CONTACTPERSON] [varchar](50) NULL, 
    [NAME_CONTACTNUMBER] [varchar](50) NULL, 
    [MODIFIED_ON] [varchar](50) NULL, 
    [MODIFIED_BY] [varchar](50) NULL, 
    [MOTHERSMAIDENNAME] [varchar](50) NULL, 
    [CUSTOMER_FIRSTNAME] [varchar](50) NULL, 
    [CUSTOMER_LASTNAME] [varchar](50) NULL, 
    [CUSTOMER_MIDDLENAME] [varchar](50) NULL, 
    [EMPLOYERCITY] [varchar](50) NULL, 
    [EMPLOYERSTATE] [varchar](50) NULL, 
    [EMPLOYERZIP] [varchar](50) NULL, 
    [RESIDENTCOUNTRY] [varchar](50) NULL, 
    [EMPLOYERCOUNTRYCODE] [varchar](50) NULL, 
    [INRODU_NAME] [varchar](50) NULL, 
    [RISKCATEGORY] [varchar](50) NULL, 
    [ENTITY_GROUP_CODE] [varchar](50) NULL, 
    [ACCTNO_INTRO] [varchar](50) NULL, 
    [ENTITY_CODE] [varchar](50) NULL, 
CONSTRAINT [PK_TB_CUSTPERSONAL] PRIMARY KEY CLUSTERED 
(
    [CUSTNO] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] 
) ON [PRIMARY] 
---------------------------------------------------------- 


create 
PROCEDURE PROC_CUSTRATING_INC 
@WEIGHTAGE FLOAT, 
@TAB_NAME VARCHAR(4000), 
@COL_NAME VARCHAR(4000) 
[email protected]_CODE VARCHAR(50),@ENTITY_GROUP_CODE VARCHAR(50) 
AS 
BEGIN 
DECLARE @v_DAT_ DATETIME, 
@v_DAT2 DATETIME, 
@v_Pro_ VARCHAR(100), 
@v_LAS_ DATETIME, 
@v_SQL_ VARCHAR(500), 
@v_COU_ FLOAT, 
@v_TOT_ FLOAT, 
@v_BAT_ FLOAT, 

@v_SQLSTRING VARCHAR(1000) 


SET NOCOUNT ON; 

SET @v_DAT_=GETDATE(); 
SET @v_Pro_='PROC_CUSTRATING_INC'; 

DELETE FROM TEMP_CUSTPARAM; 

SELECT @v_LAS_ = LASTRUNDT FROM TB_SCHEDULE WHERE PROCESS_ID ='2'; 
SET @v_SQLSTRING = 'INSERT INTO /*+ APPEND*/ TEMP_CUSTPARAM(CUSTNO, RATING) 
SELECT DISTINCT Q.CUSTNO, ISNULL(((ISNULL(P.RATING,0) * '+ ISNULL(@WEIGHTAGE, '') +')/100),0) AS RATING 
FROM '+ ISNULL(@TAB_NAME, '') +' Q INNER JOIN TB_CUSTPARAM P 
ON Q.' + ISNULL(@COL_NAME, '') +'=P.TEXT_PARAM 
AND P.TABLENAME='''+ ISNULL(@TAB_NAME, '') +''' AND P.COLUMNNAME='''+ ISNULL(@COL_NAME, '') +''' 
AND TRUNC(Q.DI_DATE) >= '''+ ISNULL(@v_LAS_, '') +''' '; 


PRINT 'v_SQLSTRING111=== ' + ISNULL(@v_SQL_, ''); 
EXECUTE (@v_SQLSTRING); 

-- RETURN; 
MERGE INTO TB_RATING_TEMP A 
USING TEMP_CUSTPARAM E 
ON (A.CUSTNO=E.CUSTNO) 
WHEN MATCHED THEN 
UPDATE SET 
A.TEMP_RATING=ISNULL(E.RATING,0); 

SET @v_SQLSTRING='UPDATE TB_RATING_TEMP A 
SET 
A.PARAMCOUNT=A.PARAMCOUNT + 1, 
A.BRATING = NVL(A.BRATING,0) + NVL(A.TEMP_RATING,0) 
WHERE 
A.CUSTNO IN 
(
SELECT Q.CUSTNO 
FROM TB_CUSTPARAM P,'+ ISNULL(@TAB_NAME, '') +' Q 
WHERE P.TEXT_PARAM=TO_CHAR(Q.'+ ISNULL(@COL_NAME, '') +') 
)'; 

PRINT 'v_SQLSTRING222=== ' + ISNULL(@v_SQL_, ''); 
EXECUTE (@v_SQLSTRING); 
PRINT 4; 
SET @v_DAT2=GETDATE(); 
--PRINT 'PROCEDURE ' + ISNULL(@v_Pro_, '') + ' TAKES : ' + ISNULL(CONVERT(VARCHAR, trunc((((86400*(@[email protected]_DAT_))/60)/60)/24)), '') + ' Days ' + ISNULL(CONVERT(VARCHAR, trunc(((86400*(@[email protected]_DAT_))/60)/60)- 24*(trunc((((86400*(@[email protected]_DAT_))/60)/60)/24))), '') + ' Hrs. ' + ISNULL(CONVERT(VARCHAR, trunc((86400*(@[email protected]_DAT_))/60)- 60*(trunc(((86400*(@[email protected]_DAT_))/60)/60))), '') + ' Mins.' + ISNULL(CONVERT(VARCHAR, trunc(86400*(@[email protected]_DAT_))- 60*ISNULL((trunc((86400*(@[email protected]_DAT_))/60)), '') + ' Sec.'), ''); 
    END; 

運行誤差變換數據類型爲varchar到浮球連接PRC

EXEC PROC_CUSTRATING_INC 11.0,'TB_CUSTPERSONAL','OCCUPATION' 

導致錯誤

誤差變換數據類型爲varchar浮動。

回答

0

我認爲這個問題是在下面的語句

SET @v_SQLSTRING = 'INSERT INTO /*+ APPEND*/ TEMP_CUSTPARAM(CUSTNO, RATING) 
SELECT DISTINCT Q.CUSTNO, ISNULL(((ISNULL(P.RATING,0) * '+ ISNULL(@WEIGHTAGE,  '') +')/100),0) AS RATING 
FROM '+ ISNULL(@TAB_NAME, '') +' Q INNER JOIN TB_CUSTPARAM P 
ON Q.' + ISNULL(@COL_NAME, '') +'=P.TEXT_PARAM 
AND P.TABLENAME='''+ ISNULL(@TAB_NAME, '') +''' AND P.COLUMNNAME='''+  ISNULL(@COL_NAME, '') +''' 
AND TRUNC(Q.DI_DATE) >= '''+ ISNULL(@v_LAS_, '') +''' '; 

因爲@WEIGHTAGE是floatISNULL(@WEIGHTAGE, '')應改爲ISNULL(@WEIGHTAGE, 0.0)和你想在這個ISNULL一個varchar ''更改爲float聲明導致它失敗。

+0

從字符串轉換日期和/或時間時轉換失敗。 – user3642786

+0

這是sqlserver嗎?我看到'TRUNC(Q.DI_DATE)',我不認爲這在sqlserver中是有效的,當我在SQL2008和SQL2014的sqlfiddle中嘗試時出現錯誤。你能確認這是什麼數據庫和版本嗎?你也可以在執行sp時發佈控制檯的整個輸出嗎? – vmachan

相關問題