c#存储过程,给数据库表DateTime类型 赋空值!!
数据库表中某一列类型为DateTime当我使用sql语句SqlCommandcmd=newSqlCommand(strSql,con);cmd.Parameters.Ad...
数据库表中某一列类型为DateTime当我使用sql语句SqlCommand cmd = new SqlCommand(strSql, con);cmd.Parameters.Add("@OutDate", SqlDbType.DateTime); cmd.Parameters["@OutDate"].Value = System.DBNull.Value;这样 添加进数据库表中的 DateTime类型的 的值 为 "NULL"l现在我需要把sql换为存储过程我怎么去给数据库表中 DateTime类型 赋值后 值为"NULL"呢?
展开
2个回答
2013-03-27
展开全部
sql 换成 存储过程。
你的存储过程, 也是要参数的啊。
设置存储过程的参数的 Value = System.DBNull.Value
这个和普通 sql 一样的呀。
-- 测试存储过程
CREATE PROCEDURE HelloWorld2
@UserName VARCHAR(10),
@OutVal VARCHAR(10) OUTPUT,
@InoutVal VARCHAR(20) OUTPUT
AS
BEGIN
SET @OutVal = 'A';
SET @InoutVal = @UserName + @InoutVal;
END;
go
/// <summary>
/// 测试执行存储过程.
/// </summary>
/// <param name="conn"></param>
private void CallProcedure(SqlConnection conn)
{
// 创建一个 Command.
SqlCommand testCommand = conn.CreateCommand();
// 定义需要执行的SQL语句.
testCommand.CommandText = "HelloWorld2";
// 定义好,本次执行的类型,是存储过程.
testCommand.CommandType = CommandType.StoredProcedure;
// 定义要查询的参数.
// 第一个参数,是输入的.
testCommand.Parameters.Add(new SqlParameter("@UserName", "HeiHei"));
// 第2个参数,是输出的.
SqlParameter para2 = new SqlParameter("@OutVal", SqlDbType.VarChar, 10);
para2.Direction = ParameterDirection.Output;
testCommand.Parameters.Add(para2);
// 第3个参数,是既输入又输出的.
SqlParameter para3 = new SqlParameter("@InoutVal", SqlDbType.VarChar, 20);
para3.Direction = ParameterDirection.InputOutput;
para3.Value = "HAHA";
testCommand.Parameters.Add(para3);
// ExecuteNonQuery 方法,表明本次操作,不是一个查询的操作。将没有结果集合返回.
// 返回的数据,将是 被影响的记录数.
int insertRowCount = testCommand.ExecuteNonQuery();
// 存储过程执行完毕后,取得 output 出来的数据.
String pa2 = testCommand.Parameters["@OutVal"].Value.ToString();
String pa3 = testCommand.Parameters["@InoutVal"].Value.ToString();
Console.WriteLine("调用 {0} 存储过程之后, @OutVal={1}; @InoutVal={2}", testCommand.CommandText, pa2, pa3);
}
你的存储过程, 也是要参数的啊。
设置存储过程的参数的 Value = System.DBNull.Value
这个和普通 sql 一样的呀。
-- 测试存储过程
CREATE PROCEDURE HelloWorld2
@UserName VARCHAR(10),
@OutVal VARCHAR(10) OUTPUT,
@InoutVal VARCHAR(20) OUTPUT
AS
BEGIN
SET @OutVal = 'A';
SET @InoutVal = @UserName + @InoutVal;
END;
go
/// <summary>
/// 测试执行存储过程.
/// </summary>
/// <param name="conn"></param>
private void CallProcedure(SqlConnection conn)
{
// 创建一个 Command.
SqlCommand testCommand = conn.CreateCommand();
// 定义需要执行的SQL语句.
testCommand.CommandText = "HelloWorld2";
// 定义好,本次执行的类型,是存储过程.
testCommand.CommandType = CommandType.StoredProcedure;
// 定义要查询的参数.
// 第一个参数,是输入的.
testCommand.Parameters.Add(new SqlParameter("@UserName", "HeiHei"));
// 第2个参数,是输出的.
SqlParameter para2 = new SqlParameter("@OutVal", SqlDbType.VarChar, 10);
para2.Direction = ParameterDirection.Output;
testCommand.Parameters.Add(para2);
// 第3个参数,是既输入又输出的.
SqlParameter para3 = new SqlParameter("@InoutVal", SqlDbType.VarChar, 20);
para3.Direction = ParameterDirection.InputOutput;
para3.Value = "HAHA";
testCommand.Parameters.Add(para3);
// ExecuteNonQuery 方法,表明本次操作,不是一个查询的操作。将没有结果集合返回.
// 返回的数据,将是 被影响的记录数.
int insertRowCount = testCommand.ExecuteNonQuery();
// 存储过程执行完毕后,取得 output 出来的数据.
String pa2 = testCommand.Parameters["@OutVal"].Value.ToString();
String pa3 = testCommand.Parameters["@InoutVal"].Value.ToString();
Console.WriteLine("调用 {0} 存储过程之后, @OutVal={1}; @InoutVal={2}", testCommand.CommandText, pa2, pa3);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
2013-03-28
展开全部
一样的啊,没有区别!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询