קוד המשכפל את עצמו

יום שלישי, אוקטובר 5, 2010

בספרו "SQL Server 2005" – איציק בן גן מציג אתגר: כתיבת קוד המשכפל את עצמו. אסור להיעזר בפונקציות מערכת לזיהוי הקוד אותו אני מפעיל, למשל- SELECT DEST.TEXT FROM sys.dm_exec_connections SDEC CROSS APPLY sys.dm_exec_sql_text(SDEC.) AS DEST Where SDEC.most_recent_session_id=@@SPID; למה אסור? דווקא אחלה רעיון, ויש דרכים שונות לשלוף מהמערכת את הקוד הנוכחי שרץ.. פתרון מותר המוצג בספר (כדי לא לקלקל- הפונט בצבע לבן, ויש להעתיקו ל-SSMS): Print Replace(0x2027202729,0x20,'Print Replace(0x2027202729,0x20,')   פתרון מניח את הדעת לא מצאתי, ולכן אין ברירה אלא למצוא פתרונות לא מניחים את הדעת: 1. פתחו Query חדש ב-SSMS ולחצו על Execute. מכיוון שלא כתוב כלום, לא תתקבל אף תוצאה.. 2. הריצו את הקוד הבא (זו הודעת שגיאה שתשכפל את עצמה): Msg...
אין תגובות