SAP HANA में स्टोर्ड प्रोसीजर बनाते समय "Scalar type not allowed" त्रुटि आमतौर पर गलत सिंटैक्स या अमान्य कॉलम संदर्भ के कारण होती है।
समस्या का विश्लेषण
दिए गए कोड में दो मुख्य समस्याएं हैं:
1. SELECT INTO सिंटैक्स त्रुटि
गलत: SELECT: ORGID_ARTIKEL INTO ... सही: SELECT "ORGID_ARTIKEL" INTO ...
HANA में कॉलम नाम डबल कोट्स में होने चाहिए (केस-सेंसिटिव)। कोलन (:) का उपयोग INTO क्लॉज में नहीं होता।
2. स्टोर्ड प्रोसीजर टेम्पलेट सुधार
PROCEDURE "SLT_DELETE"."HCDW.IT.IT::TO_TIMESTAMP_CALL" (
IN IN_DATE DECIMAL(15),
OUT OUT_DATE TIMESTAMP
)
LANGUAGE SQLSCRIPT
READS SQL DATA AS
BEGIN
-- सही सिंटैक्स: SELECT ... INTO ... FROM DUMMY
SELECT TO_TIMESTAMP(:IN_DATE) INTO OUT_DATE FROM DUMMY;
END;
मुख्य सुधार बिंदु
- कॉलम नाम डबल कोट्स में:
"COLUMN_NAME" - इनपुट पैरामीटर में कोलन:
:IN_DATE(SQL बॉडी में) - FROM DUMMY आवश्यक: स्केलर फंक्शन कॉल के लिए
- TO_TIMESTAMP आर्गुमेंट: DECIMAL/INTEGER यूनिक्स टाइमस्टैम्प स्वीकार करता है
सामान्य गलतियां और सुधार
| गलत | सही |
|---|---|
| SELECT COL INTO VAR | SELECT "COL" INTO VAR FROM DUMMY |
| SELECT: COL INTO VAR | SELECT "COL" INTO VAR FROM TABLE |
| TO_TIMESTAMP(IN_DATE) | TO_TIMESTAMP(:IN_DATE) |
नोट: HANA SQLScript केस-सेंसिटिव है। स्कीमा, टेबल, कॉलम नाम हमेशा डबल कोट्स में लिखें।