请教"第一行'-'附近有语法错误"这是个什么问题!
我要把抓拍的照片保持到名为'photo'的数据库里面,是用存储过程实现的,建表和存储过程代码如下: 
 IF   EXISTS(SELECT   TABLE_NAME   FROM   INFORMATION_SCHEMA.TABLES 
                   WHERE   TABLE_NAME   =    'photo ') 
          DROP   TABLE   photo 
 --创建客户信息表 
 CREATE   TABLE   photo( 
 	id      INT   IDENTITY(1,1)   PRIMARY   KEY,   
 	image      nVARCHAR(50)   NULL  		 
 );     
 CREATE   PROCEDURE   add_photo(   
 	@param1		INT, 
                         @param2      	NVARCHAR(50)   
 	   )AS   
 	DELETE   FROM   photo   WHERE   id   =   @param1; 
 	INSERT   INTO   photo(image)    
 	VALUES(@param2);     
 我用vc编写的函数如下: 
 void   CBmxtDlg::insertimage(char   a[255])    
 { 
       	if(!UpdateData()) 
 		return;      	 
 	TRY{ 
 		m_db.BeginTrans(); 
 		CRecordset   rs(&m_db); 
 		CString   sql; 
                      	rs.Open(CRecordset::dynaset,    
 			 "Select   max(id)   from   photo "); 
             int   newID=-1; 
 	if(!rs.IsEOF())   { 
 			CDBVariant   var; 
 			rs.GetFieldValue((short)0,   var,   SQL_C_SLONG); 
                               if   (var.m_dwType   !=   DBVT_NULL)	 
 				newID   =   var.m_iVal+1; 
 		} 
                         //插入新的照片记录.                                  
                         sql.Format( "call   add_photo(%d, " " '%s ') ",newID,a);   
                                     TRACE(sql); 
 	                        m_db.ExecuteSQL(sql);   
 				} 
 	CATCH(CDBException,ex) 
 	{ 
 		AfxMessageBox   (ex-> m_strError); 
 		AfxMessageBox   (ex-> m_strStateNativeOrigin);	 
 		m_db.Rollback(); 
 	} 
 	AND_CATCH(CException,e) 
 	{ 
 		TCHAR   szError[100]; 
 		e-> GetErrorMessage(szError,100); 
 		AfxMessageBox   (szError); 
 		m_db.Rollback(); 
 	} 
 	END_CATCH   
 }   
 为什么执行这个函数时会出现那样的错误呢?"第一行'-'附近有语法错误",那位帮我解决立即给分!
------解决方案--------------------不懂