一个关于存储过程的问题
CREATE proc SetCallBoardMessage(@msg varchar(1000))--创建加入公告存储过程
as insert into getmsg values (@msg,getdate())
GO
这是一个插入公告的存储过程
当我那个里面有空格或者是有标点符号的时候就报错
请问一下是什么原因
------解决方案--------------------@msg的内容里有 空格或者 标点符号报错么?
那应该和你的程序调用有关,这个存储执行是没有问题的
------解决方案--------------------有空格或者是有标点符号的时候就报错
-----------
這個應該不會,如果有單引號,倒是有可能。
如果是單引號報錯,你在執行這個存儲過程采用參數的方法,就可以自動處理單引號了。
------解决方案----------------------創建測試環境
Create Table getmsg(msg Varchar(100), msgDate DateTime)
GO
--創建存儲過程
CREATE proc SetCallBoardMessage(@msg varchar(1000))--创建加入公告存储过程
as insert into getmsg values (@msg,getdate())
GO
--測試
EXEC SetCallBoardMessage 'hello word! '
Select * From getmsg
GO
--刪除測試環境
Drop Table getmsg
Drop proc SetCallBoardMessage
--結果
/*
msg msgDate
hello word! 2007-08-09 17:24:56.820
*/
------解决方案--------------------大哥呀,大哥,是谁教你这样调存储过程的呀...........
------解决方案--------------------SqlCommand cmd = new SqlCommand( "SetCallBoardMessage "+ msg ,con);
------------
這裡的問題
------解决方案--------------------SqlConnection con = CreateConnection();
SqlCommand cmd = new SqlCommand( "SetCallBoardMessage "+ msg ,con);
改為
SqlConnection con = CreateConnection();
SqlCommand cmd = new SqlCommand();
sqlCmd.CommandText = "SetCallBoardMessage ";
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add( "@msg ", msg);