参数传入存储过程后单引变成全角的问题

debug148 2009-12-16 12:02:28
传入存储过程的参数:
INSERT INTO [51075111](pd_code,pd_type_code,pd_father_type_code,pd_applicationModels,pd_supportingProduct,Pd_intime,[Pd_type],[Pd_name],[Pd_Brand_code],[Pd_Introduction],[Pd_zhiwenrongliang],[Pd_zhiwenjilu],[Pd_guanlijilurongliang],[Pd_tingdiankaoqin],[Pd_Models],[Pd_zhiwenpingmianjieshoujiaodu],[Pd_fanyingshijian],[Pd_juzhenlv],[Pd_renjialv],[Pd_renzhengfangshi],[Pd_tongxunfangshi],[Pd_wangluojiekou],[Pd_wangluochuanshuxieyi],[Pd_USBjiekou],[Pd_caijimianji],[Pd_duibifangshi],[Pd_gongzuofangshi],[Pd_jiluchaxun],[Pd_TCP/IP],[Pd_zuiduotaishu],[Pd_zhichikaxing],[Pd_zhucekashu],[Pd_ganyingjuli],[Pd_karongliang],[Pd_dengjizhiwencishu],[Pd_yunxuzhiwendengjirenshu],[Pd_tuxiangfenbianlv],[Pd_yuyanxuanze],[Pd_yingjianpingtai],[Pd_suanfabanben],[Pd_LED],[Pd_LCD],[Pd_xianshi],[Pd_menjinshuru],[Pd_menjingongneng],[Pd_menjinkongzhijiekou],[Pd_dingshixiangling],[Pd_xiaoxifabu],[Pd_weigenkatou],[Pd_yinxiao],[Pd_duomeitigongneng],[Pd_anquandengji],[Pd_tishiyin],[Pd_Upangongneng],[Pd_chumoping],[Pd_shexiangtou],[Pd_ruanjianshuoming],[Pd_shujubaocunshijian],[Pd_Flashdonghua],[Pd_zhaopianrongliang],[Pd_MP4bofang],[Pd_SDka],[Pd_jianpanshuru],[Pd_neizhihoubeidianyuan],[Pd_bianmamoshi],[Pd_tongxunbotelv],[Pd_shiyongkalei],[Pd_heihongshuangsedayin],[Pd_tingdiandaka],[Pd_zhongmian],[Pd_yinyuebaoshiwaijielingsheng],[Pd_zidongtuika],[Pd_wannianli],[Pd_yongjiujiyi],[Pd_kapianchicun],[Pd_xinpian],[Pd_zidongweiyi],[Pd_zhengfanmianshibie],[Pd_danse],[Pd_shuangse],[Pd_tidianbaohucuoshi],[Pd_kaimenyanshishijian],[Pd_baozhuangzujian],[Pd_yuanchengkaimenkongzhi],[Pd_husuogongneng],[Pd_kejiedukaqishuliang],[Pd_kangjingdianqiangdu],[Pd_waixiangchicun],[Pd_Pvoltage],[Pd_Power],[Pd_Humidity],[Pd_Temperature],[Pd_StorageHumidity],[Pd_Categories]) VALUES(''50012528'',''5111'',''5107'','''','''',''2009-12-14 18:55:11'',''指纹考勤机'',''指纹考勤机'',''1198'',''脱机考勤;多种语音提示,多种语言显示;多种考勤方式;多种通讯方式;超大容量指纹记录及考勤记录;'',''3000枚指纹'',''50000条记录'',''1000条'','''',''H8U'','''','''','''','''','''',''RS232/485'','''','''','''',''16平方毫米'','''',''脱机 '','''','''','''','''','''','''','''','''','''','''',''简体中文、繁体中文、英文、韩文'','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''',''考勤机'')

----------------------------------------------------------------------------------------------

存储过程:CREATE procedure pro_ExecuteinsertPara(@sql varchar(8000))
as
print @sql
execute @sql
GO

调用存储过程的代码:

SqlParameter[] parameters6 = {
new SqlParameter("@sql" , SqlDbType.VarChar, 8000)

};

parameters6[0].Value = sql;
try
{
WinFormDbShotSqlHelper.ExecuteDataSet("pro_ExecuteinsertPara", parameters6, "Product");
}
catch (Exception ex)
{

sql = sql + "<br>" + ex.ToString() + "<br><br><br>";
}


--------------------------------------------------------------
在探察器中发现执行的sql 变成了:
exec pro_ExecuteinsertPara @sql = 'INSERT INTO [51075111](pd_code,pd_type_code,pd_father_type_code,pd_applicationModels,pd_supportingProduct,Pd_intime,[Pd_type],[Pd_name],[Pd_Brand_code],[Pd_Introduction],[Pd_zhiwenrongliang],[Pd_zhiwenjilu],[Pd_guanlijilurongliang],[Pd_tingdiankaoqin],[Pd_Models],[Pd_zhiwenpingmianjieshoujiaodu],[Pd_fanyingshijian],[Pd_juzhenlv],[Pd_renjialv],[Pd_renzhengfangshi],[Pd_tongxunfangshi],[Pd_wangluojiekou],[Pd_wangluochuanshuxieyi],[Pd_USBjiekou],[Pd_caijimianji],[Pd_duibifangshi],[Pd_gongzuofangshi],[Pd_jiluchaxun],[Pd_TCP/IP],[Pd_zuiduotaishu],[Pd_zhichikaxing],[Pd_zhucekashu],[Pd_ganyingjuli],[Pd_karongliang],[Pd_dengjizhiwencishu],[Pd_yunxuzhiwendengjirenshu],[Pd_tuxiangfenbianlv],[Pd_yuyanxuanze],[Pd_yingjianpingtai],[Pd_suanfabanben],[Pd_LED],[Pd_LCD],[Pd_xianshi],[Pd_menjinshuru],[Pd_menjingongneng],[Pd_menjinkongzhijiekou],[Pd_dingshixiangling],[Pd_xiaoxifabu],[Pd_weigenkatou],[Pd_yinxiao],[Pd_duomeitigongneng],[Pd_anquandengji],[Pd_tishiyin],[Pd_Upangongneng],[Pd_chumoping],[Pd_shexiangtou],[Pd_ruanjianshuoming],[Pd_shujubaocunshijian],[Pd_Flashdonghua],[Pd_zhaopianrongliang],[Pd_MP4bofang],[Pd_SDka],[Pd_jianpanshuru],[Pd_neizhihoubeidianyuan],[Pd_bianmamoshi],[Pd_tongxunbotelv],[Pd_shiyongkalei],[Pd_heihongshuangsedayin],[Pd_tingdiandaka],[Pd_zhongmian],[Pd_yinyuebaoshiwaijielingsheng],[Pd_zidongtuika],[Pd_wannianli],[Pd_yongjiujiyi],[Pd_kapianchicun],[Pd_xinpian],[Pd_zidongweiyi],[Pd_zhengfanmianshibie],[Pd_danse],[Pd_shuangse],[Pd_tidianbaohucuoshi],[Pd_kaimenyanshishijian],[Pd_baozhuangzujian],[Pd_yuanchengkaimenkongzhi],[Pd_husuogongneng],[Pd_kejiedukaqishuliang],[Pd_kangjingdianqiangdu],[Pd_waixiangchicun],[Pd_Pvoltage],[Pd_Power],[Pd_Humidity],[Pd_Temperature],[Pd_StorageHumidity],[Pd_Categories]) VALUES(''50012528'',''5111'',''5107'','''','''',''2009-12-14 18:55:11'',''指纹考勤机'',''指纹考勤机'',''1198'',''脱机考勤;多种语音提示,多种语言显示;多种考勤方式;多种通讯方式;超大容量指纹记录及考勤记录;'',''3000枚指纹'',''50000条记录'',''1000条'','''',''H8U'','''','''','''','''','''',''RS232/485'','''','''','''',''16平方毫米'','''',''脱机 '','''','''','''','''','''','''','''','''','''','''',''简体中文、繁体中文、英文、韩文'','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''','''',''考勤机'')'

--------------------------------------------------------------------------------------------------------------
发现单引号变成了双引号。不知道怎么回事,很郁闷。搞三天了也没弄出来。急,在线等!!!!!
...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL77 2009-12-16
  • 打赏
  • 举报
回复
用REPLACE(COL,''',',') 
?
--小F-- 2009-12-16
  • 打赏
  • 举报
回复
if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_convert]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))   
drop function [dbo].[f_convert]
GO

/*--全角/半角转换

转换说明
全角字符从的unicode编码从65281~65374
半角字符从的unicode编码从 33~126
空格比较特殊,全角为 12288,半角为 32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则 COLLATE Latin1_General_BIN
是保证字符顺序按unicode编码排序
(此函数部分思路参考了CSDN上大力的转换函数)
--邹建 2005.01(引用请保留此信息)--*/

/*--调用示例

declare @s1 varchar(8000)
select @s1='中  2-3456a78STUVabn中国opwxyz'
select dbo.f_convert(@s1,0),dbo.f_convert(@s1,1)
--*/
CREATE FUNCTION f_Convert(
@str NVARCHAR(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @pat nvarchar(8),@step int,@i int,@spc int
IF @flag=0
SELECT @pat=N'%[!-~]%',@step=-65248,
@str=REPLACE(@str,N' ',N' ')
ELSE
SELECT @pat=N'%[!-~]%',@step=65248,
@str=REPLACE(@str,N' ',N' ')
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
WHILE @i>0
SELECT @str=REPLACE(@str,
SUBSTRING(@str,@i,1),
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
RETURN(@str)
END
GO
dawugui 2009-12-16
  • 打赏
  • 举报
回复
太长,帮顶.
nianran520 2009-12-16
  • 打赏
  • 举报
回复

--转老大的
-实现全角与半角字符转换的处理函数
CREATE FUNCTION f_Convert(
@str NVARCHAR(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @pat nvarchar(8),@step int,@i int,@spc int
IF @flag=0
SELECT @pat=N'%[!-~]%',@step=-65248,
@str=REPLACE(@str,N' ',N' ')
ELSE
SELECT @pat=N'%[!-~]%',@step=65248,
@str=REPLACE(@str,N' ',N' ')
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
WHILE @i>0
SELECT @str=REPLACE(@str,
SUBSTRING(@str,@i,1),
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
RETURN(@str)
END
GO
忆轩辕 2009-12-16
  • 打赏
  • 举报
回复
应该是你代码的问题,仔细检查代码

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧