SQLServer开发总结

实用技巧:

字符串截取:SUBSTRING(‘123456’, 1, 4)

转换日期格式:CONVERT(varchar(100), getdate(), 23) “2012-01-01”

转换格式:cast('2012-01-01' as datetime)//时间格式

Datetime增加:dateadd(yy,1, getdate())

寻坏遍历:

while 1< 2

begin

end

 

Sql 语句大全(收集)http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html

 

在强类型DataSet中创建事务

命名控件和类名必须和自动生成的类的一致,partial代表此类是一个成员类,类似于对另外一个类的扩展。

创建一个临时表

--第一步创建临时表

  CREATE TABLE #TMP_FLOW_LEAVE_OVERTIME

  (

     FLOW_YEAR     nvarchar(10)  NOT NULL,--年份

     Vacation      decimal(16, 2) default 0,--年假

  )

  select * from #TMP_FLOW_LEAVE_OVERTIME;--查询临时表

  DROP TABLE #TMP_FLOW_LEAVE_OVERTIME;--删除临时表
一个简单的执行存储过程(不带参数)Dataset的代码:

 

using (SqlConnection conn = new SqlConnection(connectionString))

            {

              conn.Open();

                SqlCommand cmd;

                conn = new SqlConnection(connection);

                DataSet myds = new DataSet();

                cmd = new SqlCommand("存储过程名", conn);

                cmd.CommandType = CommandType.StoredProcedure;

                SqlDataAdapter sdp = new SqlDataAdapter();

                sdp.SelectCommand = cmd;

                sdp.Fill(myds);

              conn.Close();

            }
一个简单的Sql事务处理代码
using (SqlConnection conn = new SqlConnection(connectionString))
         {
                conn.Open();
                SqlTransaction myTrans = conn.BeginTransaction();
                SqlCommand com = new SqlCommand();

                com.Connection = sqlConnection;

                com.Transaction = myTrans;

                com.CommandText = "SQL语句";

                com.ExecuteNonQuery();

                myTrans.Commit();//提交事务

                myTrans.Rollback();//事务回滚

                conn.Close();

                conn.Dispose();//释放资源

            }

一个简单的执行存储过程(inputoutputreturnvalue等参数)Dataset代码:

using (SqlConnection conn = new SqlConnection(connectionString))

{

     conn.Open();

     SqlCommand cmd;

     conn = new SqlConnection(connection);

     DataSet myds = new DataSet();

     cmd = new SqlCommand("存储过程名", conn);

 

     SqlParameter paraInput = new SqlParameter("@paraInput", SqlDbType.NVarChar, 15);

     paraInput.Value = strParaInput;//默认是input

     cmd.Parameters.Add(paraInput);

 

    SqlParameter paraOutput = new SqlParameter("@paraOutput", SqlDbType.Bit);

    paraOutput.Direction = ParameterDirection.Output;//输出类型

    cmd.Parameters.Add(paraOutput);

   SqlParameter paraReturn = new SqlParameter("@paraReturn", SqlDbType.NVarChar, 400);

   paraReturn.Direction = ParameterDirection.ReturnValue;//返回类型

   querycmd.Parameters.Add(paraReturn);

 

   cmd.CommandType = CommandType.StoredProcedure;

   //第一种直接执行
   Cmd.ExecuteNonQuery(); 

   //第二种用SqlDataAdapter执行
   SqlDataAdapter sdp = new SqlDataAdapter();

   sdp.SelectCommand = cmd;

   sdp.Fill(myds);

   conn.Close();

   bool OutputValue=paraOutput.Value;//获取输出值

   string ReturnValue = paraReturn.Value;//获取返回值

}

一个存储过程的参考

/********************************************************************

功能描述:验证申请单的有效性,并获取申请单的状态

创建人:

创建时间:

修改人:

修改时间:

修改事项:

*********************************************************************/

CREATE PROCEDURE 存储过程名

         @c_FLOW_TYPE nvarchar(15), --流程类型

         @b_SUCCESS bit OUTPUT,--执行结果,1-成功,0-失败。SP统一

         @c_MSG nvarchar(400) OUTPUT --执行结果信息。SP统一

AS

BEGIN TRY--捕获异常的try catch语句块

         --1.   初始化输出参数

         SELECT @b_IS_VALID = 0,@c_MSG = '',@b_SUCCESS = 1,@c_FLOW_STATE = '';

         --2.   检查参数@c_FLOW_TYPE和@c_PROCESSOR合法性(参考codelist中FLOW_TYPE的内容)

         IF NOT EXISTS(
SELECT                  1               FROM                  SYS_CODELIST A,SYS_CODELIST_LINE B               WHERE                  A.CODELIST_ID = B.CODELIST_ID                  AND A.CODELIST_NAME = 'FLOW_TYPE'                  AND B.CODE_VALUE = @c_FLOW_TYPE               ) BEGIN SET @c_MSG = N'不是有效的申请单类型!'; RETURN; END

--3. if else语句块 IF @n_FLOW_ID <= 0 BEGIN SET @c_MSG = N'申请单序号无效';--N'string' 表示string是个Unicode字符串 END ELSE BEGIN SET @c_MSG =N'申请单序号有效'; END END TRY BEGIN CATCH --设置返回信息 SET @b_SUCCESS = 0; SET @c_MSG = ERROR_MESSAGE() + N' ([dbo].[NSP_FLOW_APPLICATION_VERIFY])'; RAISERROR(@c_MSG,16,1)--RAISERROR是用于抛出一个错误. --参考:(http://www.cnblogs.com/xugang/archive/2011/04/09/2010216.html) END CATCH
原文地址:https://www.cnblogs.com/zhangliangzlee/p/2608259.html