פונקציות
-
אשמח לעזרה.
מדוע יש לי כאן שגיאה?
(קיצצתי חלק גדול מהפונקציה. השגיאה כבר בהתחלה בIF שהוא מסמן קו אדום מתחת הIF).CREATE FUNCTION loginuser (@username VARCHAR(100), @dBname VARCHAR(100), @password VARCHAR(100),@usernametemp VARCHAR(100) output,@passtemp VARCHAR(100) output) RETURNS TABLE AS RETURN if exists (SELECT dbname from dbo.all_db WHERE (dbname = @dbname)) begin end GO
פורסם במקור בפורום CODE613 ב21/07/2016 23:45 (+03:00)
-
ראשית, פונקציה ב SQL לא יכולה לקבל פרמטר של OUTPUT, זה נגד ההיגיון של פונקציה ב SQL באופן כללי.
שנית, לפונקציה שמחזירה טבלה ישנם שני סוגים, INLINE ו MULTILINE.
INLINE אומר שאין לך שום יכולת לכתוב קוד בתוך הפונקציה, פרט למשפט SELECT בודד, ואז אתה פטור מלהגדיר מפורשות את רשימת העמודות מראש (היא עדיין תקובע בעת יצירת הפונקציה גם אם תשים כוכבית ב SELECT).
MULTILINE נותן לך את האפשרות לכתוב קוד בפנים אבל דורש ממך להגדיר בדיוק אלו עמודות יהיו בטבלה, אתה יצרת INLINE ומנסה לכתוב קוד בפנים, וזאת השגיאה שאתה רואה.שלישית, אין כלום בין ה BEGIN ל END שזאת שגיאה בפני עצמה, אם אין לך כעת מה לשים תדחוף PRINT או משהו בלתי מזיק בסגנון.
רביעית, הייתי ממליץ לך להשתמש בדוגמה מוכנה של פונקציה מתוך ה TEMPLATE EXPLORER שקיים ב SSMS, או להוריד דוגמה מהאינטרנט ולשנות אותה עד שתדע לכתוב לבד.
פורסם במקור בפורום CODE613 ב22/07/2016 01:31 (+03:00)