设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5173|回复: 17
打印 上一主题 下一主题

用變量構造出來的SQL語句在TSQL中怎樣作才能執行哪?

[复制链接]
跳转到指定楼层
1#
发表于 2002-10-27 00:52:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
declare result as varchar(600)
result = "select * from uv_wage_month_total_union_history where wage_date_year="+str(@my_year)+" and wage_date_month="+ str(@my_date_month)
----------------------------------------
請問現在構造完了,但怎樣作此語句才可以執行哪?有點迷啦。請各位指教,多謝![em15]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
18#
 楼主| 发表于 2002-10-31 00:19:00 | 只看该作者
與這個無關,現在的問題是在SQL分析器中是沒有絲毫問題的,但是在ADP客戶端卻無法返回記錄集。
17#
发表于 2002-10-30 23:56:00 | 只看该作者
是否要设定 output关键字?
16#
 楼主| 发表于 2002-10-30 19:55:00 | 只看该作者
這樣是不可以執行的,只因為構造的代碼中有數字出現。
但現在我又有問題出現啦,用上述構造的代碼,已成功執行(在SQL環境中)但在ADP前端ACCESS中卻無記錄集返回。提示如下:the stored procedure executed successfully but did not return records.為什麼成功執行卻無記錄集返回。
我現在想上述構的存儲過程作為報表的數據源,但現在成功的無記錄集返回,怎麼回事,請各位指點。多謝!
15#
发表于 2002-10-30 18:40:00 | 只看该作者
能否再问一下
--use acc
/*
alter procedure usp_qry_xwage_xmonth_en @my_year smallint,@my_month tinyint,@my_dept_str varchar(200) = null,@my_title_str varchar(200) = null,@my_emp_sn_str varchar(200) =null
as
begin
declare @query as varchar(200)
set @query ='select * from uv_wage_month_total where wage_date_year='+str(@my_year)+' and wage_date_month='+str(@my_month)
if @my_dept_str is not null
set @query = @query + ' and dept_no in ('+@my_dept_str +')'
if @my_title_str is not null
set @query = @query + ' and emp_title in ('+@my_title_str+')'
if @my_emp_sn_str is not null
set @query = @query + ' and emp_sn in ('+@my_emp_sn_str+')'
-- 注意:
exec @query
-- 这样能否执行?因为前面的 @query的赋值过程已经和你第一个帖子的赋值过程
-- 完全不同了, 而且现在 @query 赋值的最后结果也全部是字符,我想里面已经不
-- 涉及到数字了,因为里面所有的数字已经全部用  str() 函数转换为字符了
-- 不好意思,我问得比较繁琐一点,主要是我刚学 sql ,问仔细点以后就不用自己再
-- 慢慢捉摸了
end
*/
--exec usp_qry_xwage_xmonth_en @my_year=2002,@my_month=9,@my_dept_str="'HHoffice','HHQA'"
14#
 楼主| 发表于 2002-10-30 01:54:00 | 只看该作者
看來您還沒看出問題所在,我提示在TSQL中有這樣一條語句才是解決問題所在
exec(@query) 為什麼不是execute @query哪?
如果@query所用字段全部是字符品,則execute @query是可以通過的。我憶測試過。
sql2k企業版SQLp2,win2000和sp2都是英文版.
13#
发表于 2002-10-30 00:44:00 | 只看该作者
不是和 CG1 说的一样吗?
12#
 楼主| 发表于 2002-10-30 00:15:00 | 只看该作者
終於作出來啦。原因嘛,很簡單,對比一下上面的即可見分曉。
--use acc
/*
alter procedure usp_qry_xwage_xmonth_en @my_year smallint,@my_month tinyint,@my_dept_str  varchar(200) = null,@my_title_str varchar(200) = null,@my_emp_sn_str varchar(200) =null   
as     
begin   
declare @query as varchar(200)
set @query ='select * from uv_wage_month_total where wage_date_year='+str(@my_year)+' and wage_date_month='+str(@my_month)
if @my_dept_str is not  null     
         set @query = @query + '  and dept_no in ('+@my_dept_str +')'   
if @my_title_str is not null   
          set @query = @query + ' and emp_title in ('+@my_title_str+')'   
if @my_emp_sn_str is not null   
           set @query = @query + ' and emp_sn in ('+@my_emp_sn_str+')'   
execute(@query)
end     
*/
--exec usp_qry_xwage_xmonth_en @my_year=2002,@my_month=9,@my_dept_str="'HHoffice','HHQA'"
11#
 楼主| 发表于 2002-10-29 22:41:00 | 只看该作者
cgl您說的哪句可以運行,但我的年月是數字的,問題是當構造完的SQL語句是字符串,所以無法執行。可有辦法,又怎樣把數字值引入到上例中的函數中去哪?多謝!
10#
发表于 2002-10-29 03:42:00 | 只看该作者
set @query = 'select * from uv_wage_month_total_union_history where wage_date_year= ' + str(@my_year) + ' and wage_date_month = ' + str(@my_month)

我想问一下,这样可否运行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-10 04:41 , Processed in 0.120157 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表