全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1079
推到 Plurk!
推到 Facebook!

请问这样的sql语句在delphi中如何执行?如何写成sql中的函数或过程?

缺席
momomo
一般會員


發表:3
回覆:2
積分:1
註冊:2006-12-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-23 14:53:44 IP:121.230.xxx.xxx 訂閱
在sql查询分析器中执行如下语句正常返回一个表:

declare @sql varchar(8000)
set @sql = 'select djrq as 日期,'
select @sql = @sql 'sum(case zyxm when ''' zyxm '''
then sl else 0 end) as ''' zyxm ''','
from (select zyxm from bz_mxjdbb where djh='1') as a
select @sql = left(@sql,len(@sql)-1) ' from bz_mxjdbb where xsdbh=''111'' (注:这里的111我想通过参数传递进去) group by djrq'
exec(@sql)
go

我想在sql中通过ADOQuery执行这个语句并使用这个表.现在的做法是:

1、在sql中创建一个函数get_zyxmmxjdsql (@xsdbh varchar(50)),想通过函数返回完整的sql语句出来再执行查询;

create function get_zyxmmxjdsql (@xsdbh varchar(50)) Returns varchar(8000) as
begin
DECLARE @sql varchar(8000)
SET @sql = 'select djrq as 日期,'
SELECT @sql = @sql 'sum(case zyxm when ''' zyxm '''
then sl else 0 end) as '''
zyxm ''','
FROM (SELECT zyxm
FROM bz_mxjdbb
WHERE djh = '1') AS a
SELECT @sql = LEFT(@sql, len(@sql) - 1)
' from bz_mxjdbb where xsdbh=' @xsdbh ' group by djrq'
return @sql
end

在查询分析器中执行print dbo.get_zyxmmxjdsql ('111')
可以看到完整的sql语句内容,但在sql中通过查询分析器中执行
select dbo.get_zyxmmxjdsql('111'),能显示出一段sql语句,但是不完整,后面的好像被截断了一样,是不是这个sql语句的长度超出字段的最大值了?

在delphi中这样写:
ADOQuery1.SQL.Text:='select dbo.get_zyxmmxjdsql (''' TextEdit1.Text ''')';
ADOQuery1.Execute;
这样执行没提示出错,但在报表文件的数据源中提示N多字段没找到,也就是说在delphi中这样写不行...

请教各位XDJM我应该怎么办才可以达到我的目的:---执行这个sql并返回一个表
系統時間:2024-05-19 16:21:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!