sql语句总结

 
在查询语句中不能使用iif(isempty(),,)函数,能用ISNULL ( check _ expression , replacement_value )
replacement_value 是check_expression 为 NULL时将返回的表达式。 也能用 (CASE WHEN t .parentuid IS NULL THEN 1 ELSE 2 END) AS stype ,据说isnull比case速度要快,没测试过,姑且是吧!
但是在用case时,说结构不对。视图定义中没有输出列或from语句中没有项目。搞不懂,不过能输出结果。
同事说有些情况需要在属性中设置,不能在设计中进行设置。奇怪!!!!
SELECT s.so_id AS so_id, s.state_Name AS state_Name, s.state_Memo AS state_Memo,
s.main_Rank AS main_Rank, s.sub_Rank AS sub_Rank, s.state_Code AS state_Code,
p.execstate_id, p.exec_begin, p.exec_end, p.empcode, p.create_Time, p.exec_memo,
p.remarks, p.uid, s.id, CASE WHEN p.plan_time IS NULL
THEN s.plan_time ELSE s.plan_time END AS plan_time
FROM (SELECT dbo.exec_state_proc.*
FROM (SELECT MAX(DISTINCT create_Time) AS create_Time
FROM dbo.exec_state_proc
GROUP BY execstate_id) AS t INNER JOIN
dbo.exec_state_proc ON t .create_Time = dbo.exec_state_proc.create_Time)
p RIGHT OUTER JOIN
dbo.exec_state s ON p.execstate_id = s.id
1)其中若引用了case when保存时总是出错(case错误),不过不影响查询。
2)其中若引用了case when保存后,若再添加新的列,则不能保存(from错误)。这时可以先删除case,添加字段,然后在添加case.
一个存储过程,作为备忘。
CREATE PROCEDURE crm_changeamount
@so_id numeric,@so_amount numeric,@empcode nvarchar(5)
AS
declare @allsum numeric,@qp_id numeric,@task_id numeric,@old_so_amount numeric
set @allsum=0
select @old_so_amount=so_amount from crmtest.dbo.tc_sales_order_m where so_id=@so_id
update crmtest.dbo.tc_sales_order_m set so_amount=@so_amount where so_id=@so_id
select @qp_id=qp_id from crmtest.dbo.rel_qp_so where so_id=@so_id
select @allsum=@allsum+so_amount from crmtest.dbo.tc_sales_order_m m join crmtest.dbo.rel_qp_so s on m.so_id=s.so_id where s.qp_id=@qp_id
update crmtest.dbo.tc_quote_price_m set qp_amount=@allsum where qp_id=@qp_id
select @task_id=task_id from crmtest.dbo.tc_quote_price_m where qp_id=@qp_id
update crmtest.dbo.tc_task set task_sales_projection=@allsum where task_id=@task_id
insert into tracehistory (tablename,pkeyid,oldvalue,newvalue,alt_empcode) values('tc_sales_order_m',@so_id,@old_so_amount,@so_amount,@empcode)
GO
其中注意的几点:
1)as前面的变量是存储过程的参数。
2)@empcode nvarchar(5)变量定义为nvarchar需要定义其个数。
3)declare @allsum numeric,@qp_id numeric,@task_id numeric,@old_so_amount numeric存储过程中变量的声明需要加declare
4)select @task_id=task_id from crmtest.dbo.tc_quote_price_m where qp_id=@qp_id 设置某个变量的值可采用上面的方法。
5)在sql中的查询分析器里调用存储过程使用exec produrename a1,b1,c1 如
exec crm_changemount 5201,2401,'02141'
6)在.net中调用存储过程 myApp.Get_Field("crm_changeamount " & soid & "," & newamount & ",'" & myApp.GetEmpCode(Me.User.Identity.Name & "'"))其中myapp.get_field(sql语句)。
Me.SqlDataSource1.SelectCommand = "select * from (" & Me.FindData1.GetStrSql() & ") t order by prod_code desc"
需要对嵌套的sql语句加括号并定义个别名如t.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,我们可以使用Statement或PreparedStatement来执行SQL语句。对于Statement,我们可以使用其execute()方法来执行任意的SQL语句。这个方法几乎可以执行任何类型的SQL语句,并且执行不同的SQL语句会产生不同的输出结果。 然而,通常情况下我们更倾向于使用executeQuery()方法或executeUpdate()方法来执行SQL语句,这两个方法更为简单。executeQuery()方法用于执行查询语句,并返回一个ResultSet对象,该对象包含了查询结果的数据。而executeUpdate()方法用于执行更新语句,如插入、更新或删除数据,并返回受影响的行数。如果我们不清楚SQL语句的类型,那么只能使用execute()方法来执行该SQL语句了。 另外,PreparedStatement也是执行SQL语句的一种方式。它提供了execute()、executeUpdate()和executeQuery()三个方法,与Statement类似,但这三个方法不需要传入参数,因为PreparedStatement已经预编译了SQL语句总结起来,Java可以使用Statement的execute()方法、executeQuery()方法或executeUpdate()方法来执行SQL语句,而PreparedStatement也提供了相应的方法来执行预编译的SQL语句。具体使用哪个方法取决于我们的需求和对SQL语句类型的了解。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java 学习之路 之 执行SQL语句的方式(五十三)](https://blog.csdn.net/sym900728/article/details/41823497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值