關于SQL語句中使用變量的問題
插入進去的數據的類型不匹配. 以int型和nvarchar型為例,其他的像日期型的你自己發揮.
問:
存儲過程這樣的:
CREATE PROCEDURE insertxuesheng @xuehao int,@xingming varchar,@banji varchar,@zhuanye varchar,@nianling int,@xingbie varchar AS
insert 學生(學號,姓名,班級,專業,年齡,性別) values(@xuehao,@xingming,@banji,@zhuanye,@nianling,@xingbie)
代碼這樣的:
SqlCommand cmd = new SqlCommand("insertxuesheng", conn);
*dType = *Procedure;
*hValue("@xuehao", *);
*hValue("@xingming",*);
*hValue("@banji", *);
*hValue("@zhuanye", *);
*hValue("@nianling", *);
*hValue("@xingbie", *);
*eNonQuery();
插入數據后我去看數據庫里的表,發現只有學號和年齡有數據,其他都是空值,怎么回事
答:
傳入的數據類型不對.
因為學號和年齡是int型,所以傳入*可以. 因為這時* = " 123", 實際上的SQL語句中就是:xuehao=123
而針對其他的字段,則都是字符型的,因此 在SQL語句中應該是: xingming = 'abc' .
而:*hValue("@xingming",*);
執行的結果是: xingming=abc.這當然就不行啦.
所以改為: *hValue("@xingming","'" + * + "'"); 就是給*前后各加一個引號再傳給存儲過程.
sql語句 變量賦值
在一個問題中遇到的一段精典動態SQL代碼:declare @fdate datetime declare @sql0 nvarchar(4000) declare @banzhi varchar(4),@num varchar(4),@cur_id intset @cur_id=2497 set @sql0=' SELECT @banzhi=b'+ case when substring(convert(char(10),@fdate,120),9,1)=0 then substring(convert(char(10),@fdate,120),10,1) else substring(convert(char(10),@fdate,120),9,2) end+' FROM kq_paiban'+ ' where empid='''+rtrim(convert(char,@cur_id))+''' and sessionid=(select id from s_session where convert(varchar(7),date0,120)='''+substring(convert(char(10),@fdate,120),1,7)+''')' select (@sql0)--顯示動態構造的SQL語句 --在構造動態SQL語句字符串時,對其中動態部分(比如這里的列名B1,B2[Bi]后面變化的部分i)要先運算出來,還有其中的常量部分,最后將字符串連接成完整語句.exec sp_executesql @sql0,N'@banzhi varchar(4) output',@num output --這里沒有使用EXEC()函數,因為該存儲過程支持嵌入參數.。
SQL語句中字段的值是變量怎么傳遞
如果你用存儲過程的話,你可以聲明一個變量來存放sql:
DECLARE @SQL_1 VARCHAR(8000)、
SET @SQL_1='update [表1] SET U_'+i+'=2 FROM [表1] where code=001 '
EXEC @SQL_1
如果你sql是直接寫在asp里的話:
sql1="update [表1] SET U_"&i&"=2 FROM [表1] where code=001"