Sql server microsoft sql server management studio中的最大长度为8000
因此,在我的过程中发现了一个错误,Sql server microsoft sql server management studio中的最大长度为8000,sql-server,ssms,Sql Server,Ssms,因此,在我的过程中发现了一个错误,OPENQUERY的查询字符串部分超过了8000个字符的最大定义限制。我能做什么 错误 以“select distinct UPPER(cast时大写)(i.attendantaddress为varchar(30))开头的字符串为空,则以“i.specialnotes else cast(i.attendantaddress)”开头的字符串太长。最大长度为8000-- 存储过程 CREATE procedure [dbo].[proc_GetFreePatien
OPENQUERY
的查询字符串部分超过了8000个字符的最大定义限制。我能做什么
错误
以“select distinct UPPER(cast时大写)(i.attendantaddress为varchar(30))开头的字符串为空,则以“i.specialnotes else cast(i.attendantaddress)”开头的字符串太长。最大长度为8000--
存储过程
CREATE procedure [dbo].[proc_GetFreePatients1_20apr]
as
declare @temp table(CONTROLNO varchar(max), UHID varchar(250),PATIENTNAME varchar(250),AGE INT,GENDER VARCHAR(1),ADRESS varchar(500),CONTACTNUMBER varchar(20),IPID varchar(20),BED varchar(20),REASONFORADMISSION varchar(max),DIAGNOSIS varchar(max),ADMITDATETIME datetime,DOCTOR varchar(150),
SPECIALITY varchar(500),REFERREDDOCTOR varchar(500),RECOMMENDEDBY varchar(500),EMERGENCYCOLDCASE varchar(500),WARD varchar(150))
insert @temp
select * from openquery(ahdelwards,'select distinct UPPER (case when cast(i.attendantaddress as varchar(30)) is null then i.specialnotes else cast(i.attendantaddress as varchar(30)) end) CONTROLNO,pm.registrationno,
rp.firstname||'' ''||rp.middlename||'' ''||rp.lastname as Patientname,rp.age,
(case when rp.gender=71 then ''F''
else ''M'' end ) GENDER,
ad.address1||'',''||ad.address2||'',''||c.cityname||'',''||sm.statename ADRESS,
(case when ad.residencenumber is null then
(case when ad.emergencynumber is null then ad.mobilenumber
when ad.emergencynumber is not null then ad.emergencynumber
when ad.mobilenumber is null then ad.emergencynumber
when ad.mobilenumber is not null then ad.mobilenumber end) else ad.residencenumber end) CONTACTNUMBER,
i.inpatientno,
bm.bedcode,
I.REASONFORADMISSION,
(select dt.parametervalue
from wards.dischargesummdtls dt
where dt.parammappingid in
(select pm.parammappingid
from wards.parametermapping pm
where pm.parameterid = 1299)
and dt.status = 1
and dt.dischargeno in
(select dy.dischargeno
from wards.dischargesumm_dync dy
where dy.ipno = i.inpatientno)) diagnosis,
i.dateofadmission,
e.FIRSTNAME||'' ''||e.MIDDLENAME||'' ''||e.LASTNAME as doctor,
f_getspeciality(i.admittingdoctor)Speciality,
f_getemployeename(i.referreddoctor)referreddoctor,
UPPER(i.wardnurse) RECOMMENDEDBY,
UPPER(i.housekeeping) EMERGENCYCOLDCASE,
l.leveldetailname
from billing.pateintpolicydetails pd
left join billing.patientpolicymaster pm
on pd.policymasterid = pm.patientpolicymasterid
and pd.policystatus = 1
and pd.aggrementid = 60429
join adt.inpatientmaster i
on i.uhid = pm.registrationno
join registration.patient rp
on rp.uhid = i.uhid
join
registration.addressmaster ad on rp.registrationid=ad.registrationid and ad.addresstypeid=''2'' and ad.status=''1''
inner join
ehis.countrymaster cm on cm.countrycode=ad.country
inner join
ehis.statemaster sm on sm.statecode=ad.state and sm.status=''1''
inner join
ehis.districtmaster dm on dm.districtcode=ad.district and dm.status=''1'' and dm.stateid=sm.stateid
inner join
ehis.citymaster c on c.citycode=ad.city and c.status=''1'' and c.districtid=dm.districtid
join adt.bedmaster bm
on bm.bedid = i.bedid
join hr.employee_main_details e
on e.employeeid = i.admittingdoctor
join adt.leveldetail l
on l.leveldetailid = bm.leveldetailid
where pm.locationid = 10701
and i.locationid = 10701
and i.status not in (7,11)
union
select distinct UPPER (case when cast(i.attendantaddress as varchar(30)) is null then i.specialnotes else cast(i.attendantaddress as varchar(30)) end) CONTROLNO,pm.registrationno,
rp.firstname||'' ''||rp.middlename||'' ''||rp.lastname as Patientname,rp.age, (case when rp.gender=71 then ''F''
else ''M'' end ) GENDER,
ad.address1||'',''||ad.address2||'',''||c.cityname||'',''||sm.statename ADRESS,
(case when ad.residencenumber is null then
(case when ad.emergencynumber is null then ad.mobilenumber
when ad.emergencynumber is not null then ad.emergencynumber
when ad.mobilenumber is null then ad.emergencynumber
when ad.mobilenumber is not null then ad.mobilenumber end) else ad.residencenumber end) CONTACTNUMBER,i.inpatientno,
bm.bedcode,
I.REASONFORADMISSION,
(select dt.parametervalue
from wards.dischargesummdtls dt
where dt.parammappingid in
(select pm.parammappingid
from wards.parametermapping pm
where pm.parameterid = 1299)
and dt.status = 1
and dt.dischargeno in
(select dy.dischargeno
from wards.dischargesumm_dync dy
where dy.ipno = i.inpatientno)) diagnosis,
i.dateofadmission,
e.FIRSTNAME||'' ''||e.MIDDLENAME||'' ''||e.LASTNAME as doctor,
f_getspeciality(i.admittingdoctor)Speciality,
f_getemployeename(i.referreddoctor)referreddoctor,
UPPER(i.wardnurse) RECOMMENDEDBY,
UPPER(i.housekeeping) EMERGENCYCOLDCASE,
l.leveldetailname
from billing.pateintpolicydetails pd
full outer join billing.patientpolicymaster pm
on pd.policymasterid = pm.patientpolicymasterid
and pd.policystatus = 1
join adt.inpatientmaster i
on i.uhid = pm.registrationno
join registration.patient rp
on rp.uhid = i.uhid
join
registration.addressmaster ad on rp.registrationid=ad.registrationid and ad.addresstypeid=''2'' and ad.status=''1''
inner join
ehis.countrymaster cm on cm.countrycode=ad.country
inner join
ehis.statemaster sm on sm.statecode=ad.state and sm.status=''1''
inner join
ehis.districtmaster dm on dm.districtcode=ad.district and dm.status=''1'' and dm.stateid=sm.stateid
inner join
ehis.citymaster c on c.citycode=ad.city and c.status=''1'' and c.districtid=dm.districtid
join adt.bedmaster bm
on bm.bedid = i.bedid
join hr.employee_main_details e
on e.employeeid = i.admittingdoctor
join adt.leveldetail l
on l.leveldetailid = bm.leveldetailid
and l.leveldetailid not in (221,257)
where i.freepatient = 1
and pm.locationid = 10701
and i.locationid = 10701
and i.status not in (7,11)
union
select distinct UPPER (case when cast(i.attendantaddress as varchar(30)) is null then i.specialnotes else cast(i.attendantaddress as varchar(30)) end) CONTROLNO,pm.registrationno,
rp.firstname||'' ''||rp.middlename||'' ''||rp.lastname as Patientname,rp.age, (case when rp.gender=71 then ''F''
else ''M'' end ) GENDER,
ad.address1||'',''||ad.address2||'',''||c.cityname||'',''||sm.statename ADRESS,
(case when ad.residencenumber is null then
(case when ad.emergencynumber is null then ad.mobilenumber
when ad.emergencynumber is not null then ad.emergencynumber
when ad.mobilenumber is null then ad.emergencynumber
when ad.mobilenumber is not null then ad.mobilenumber end) else ad.residencenumber end) CONTACTNUMBER,
i.inpatientno,
bm.bedcode,
I.REASONFORADMISSION,
(select dt.parametervalue
from wards.dischargesummdtls dt
where dt.parammappingid in
(select pm.parammappingid
from wards.parametermapping pm
where pm.parameterid = 1299)
and dt.status = 1
and dt.dischargeno in
(select dy.dischargeno
from wards.dischargesumm_dync dy
where dy.ipno = i.inpatientno)) diagnosis,
i.dateofadmission,
e.FIRSTNAME||'' ''||e.MIDDLENAME||'' ''||e.LASTNAME as doctor,
f_getspeciality(i.admittingdoctor)Speciality,
f_getemployeename(i.referreddoctor)referreddoctor,
UPPER(i.wardnurse) RECOMMENDEDBY,
UPPER(i.housekeeping) EMERGENCYCOLDCASE,
l.leveldetailname
from billing.pateintpolicydetails pd
full outer join billing.patientpolicymaster pm
on pd.policymasterid = pm.patientpolicymasterid
and pd.policystatus = 1
join adt.inpatientmaster i
on i.uhid = pm.registrationno
join registration.patient rp
on rp.uhid = i.uhid
join
registration.addressmaster ad on rp.registrationid=ad.registrationid and ad.addresstypeid=''2'' and ad.status=''1''
inner join
ehis.countrymaster cm on cm.countrycode=ad.country
inner join
ehis.statemaster sm on sm.statecode=ad.state and sm.status=''1''
inner join
ehis.districtmaster dm on dm.districtcode=ad.district and dm.status=''1'' and dm.stateid=sm.stateid
inner join
ehis.citymaster c on c.citycode=ad.city and c.status=''1'' and c.districtid=dm.districtid
join adt.bedmaster bm
on bm.bedid = i.bedid
join hr.employee_main_details e
on e.employeeid = i.admittingdoctor
join adt.leveldetail l
on l.leveldetailid = bm.leveldetailid
and l.leveldetailid in (221,257)
where i.freepatient = 1
and pm.locationid = 10701
and i.locationid = 10701
and i.status not in (7,11)
')
--pd.aggrementid IN (60429,7140)
select distinct * from @temp order by 11 asc
thx需要这个-虽然在链接服务器上执行时我需要将@strSQL封装在()中thx需要这个-虽然在链接服务器上执行时我需要将@strSQL封装在()中
Declare @strSQL varchar(max)
set @strSQL = N'<your query here>'
exec @strSQL at <YourLinkedServerName>
CREATE PROCEDURE [dbo].[proc_GetFreePatients1_20apr]
AS
BEGIN
DECLARE @temp TABLE(CONTROLNO varchar(max), UHID varchar(250),PATIENTNAME varchar(250),AGE INT,GENDER VARCHAR(1),ADRESS varchar(500),
CONTACTNUMBER varchar(20),IPID varchar(20),BED varchar(20),REASONFORADMISSION varchar(max),DIAGNOSIS varchar(max),
ADMITDATETIME datetime,DOCTOR varchar(150),SPECIALITY varchar(500),REFERREDDOCTOR varchar(500),RECOMMENDEDBY varchar(500),
EMERGENCYCOLDCASE varchar(500),WARD varchar(150))
DECLARE @strSQL VARCHAR(MAX)
SET @strSQL = N'SELECT DISTINCT Upper (
CASE
WHEN Cast(i.attendantaddress AS VARCHAR(30)) IS NULL THEN i.specialnotes
ELSE Cast(i.attendantaddress AS VARCHAR(30))
END) controlno,
pm.registrationno,
rp.firstname
||'' ''
||rp.middlename
||'' ''
||rp.lastname AS patientname,
rp.age, (
CASE
WHEN rp.gender=71 THEN ''f''
ELSE ''m''
END ) gender,
ad.address1
||'',
''
||ad.address2
||'',
''
||c.cityname
||'',
''
||sm.statename adress, (
CASE
WHEN ad.residencenumber IS NULL THEN (
CASE
WHEN ad.emergencynumber IS NULL THEN ad.mobilenumber
WHEN ad.emergencynumber IS NOT NULL THEN ad.emergencynumber
WHEN ad.mobilenumber IS NULL THEN ad.emergencynumber
WHEN ad.mobilenumber IS NOT NULL THEN ad.mobilenumber
END)
ELSE ad.residencenumber
END) contactnumber,
i.inpatientno,
bm.bedcode,
i.reasonforadmission,
(
SELECT dt.parametervalue
FROM wards.dischargesummdtls dt
WHERE dt.parammappingid IN
(
SELECT pm.parammappingid
FROM wards.parametermapping pm
WHERE pm.parameterid = 1299)
AND dt.status = 1
AND dt.dischargeno IN
(
SELECT dy.dischargeno
FROM wards.dischargesumm_dync dy
WHERE dy.ipno = i.inpatientno)) diagnosis,
i.dateofadmission,
e.firstname
||'' ''
||e.middlename
||'' ''
||e.lastname AS doctor,
f_getspeciality(i.admittingdoctor) speciality,
f_getemployeename(i.referreddoctor) referreddoctor,
upper(i.wardnurse) recommendedby,
upper(i.housekeeping) emergencycoldcase,
l.leveldetailname
FROM billing.pateintpolicydetails pd
LEFT JOIN billing.patientpolicymaster pm
ON pd.policymasterid = pm.patientpolicymasterid
AND pd.policystatus = 1
AND pd.aggrementid = 60429
JOIN adt.inpatientmaster i
ON i.uhid = pm.registrationno
JOIN registration.patient rp
ON rp.uhid = i.uhid
JOIN registration.addressmaster ad
ON rp.registrationid=ad.registrationid
AND ad.addresstypeid=''2''
AND ad.status=''1''
INNER JOIN ehis.countrymaster cm
ON cm.countrycode=ad.country
INNER JOIN ehis.statemaster sm
ON sm.statecode=ad.state
AND sm.status=''1''
INNER JOIN ehis.districtmaster dm
ON dm.districtcode=ad.district
AND dm.status=''1''
AND dm.stateid=sm.stateid
INNER JOIN ehis.citymaster c
ON c.citycode=ad.city
AND c.status=''1''
AND c.districtid=dm.districtid
JOIN adt.bedmaster bm
ON bm.bedid = i.bedid
JOIN hr.employee_main_details e
ON e.employeeid = i.admittingdoctor
JOIN adt.leveldetail l
ON l.leveldetailid = bm.leveldetailid
WHERE pm.locationid = 10701
AND i.locationid = 10701
AND i.status NOT IN (7,11)
UNION
SELECT DISTINCT upper (
CASE
WHEN cast(i.attendantaddress AS varchar(30)) IS NULL THEN i.specialnotes
ELSE cast(i.attendantaddress AS varchar(30))
END) controlno,
pm.registrationno,
rp.firstname
||'' ''
||rp.middlename
||'' ''
||rp.lastname AS patientname,
rp.age, (
CASE
WHEN rp.gender=71 THEN ''f''
ELSE ''m''
END ) gender,
ad.address1
||'',
''
||ad.address2
||'',
''
||c.cityname
||'',
''
||sm.statename adress, (
CASE
WHEN ad.residencenumber IS NULL THEN (
CASE
WHEN ad.emergencynumber IS NULL THEN ad.mobilenumber
WHEN ad.emergencynumber IS NOT NULL THEN ad.emergencynumber
WHEN ad.mobilenumber IS NULL THEN ad.emergencynumber
WHEN ad.mobilenumber IS NOT NULL THEN ad.mobilenumber
END)
ELSE ad.residencenumber
END) contactnumber,
i.inpatientno,
bm.bedcode,
i.reasonforadmission,
(
SELECT dt.parametervalue
FROM wards.dischargesummdtls dt
WHERE dt.parammappingid IN
(
SELECT pm.parammappingid
FROM wards.parametermapping pm
WHERE pm.parameterid = 1299)
AND dt.status = 1
AND dt.dischargeno IN
(
SELECT dy.dischargeno
FROM wards.dischargesumm_dync dy
WHERE dy.ipno = i.inpatientno)) diagnosis,
i.dateofadmission,
e.firstname
||'' ''
||e.middlename
||'' ''
||e.lastname AS doctor,
f_getspeciality(i.admittingdoctor) speciality,
f_getemployeename(i.referreddoctor) referreddoctor,
upper(i.wardnurse) recommendedby,
upper(i.housekeeping) emergencycoldcase,
l.leveldetailname
FROM billing.pateintpolicydetails pd
FULL OUTER JOIN billing.patientpolicymaster pm
ON pd.policymasterid = pm.patientpolicymasterid
AND pd.policystatus = 1
JOIN adt.inpatientmaster i
ON i.uhid = pm.registrationno
JOIN registration.patient rp
ON rp.uhid = i.uhid
JOIN registration.addressmaster ad
ON rp.registrationid=ad.registrationid
AND ad.addresstypeid=''2''
AND ad.status=''1''
INNER JOIN ehis.countrymaster cm
ON cm.countrycode=ad.country
INNER JOIN ehis.statemaster sm
ON sm.statecode=ad.state
AND sm.status=''1''
INNER JOIN ehis.districtmaster dm
ON dm.districtcode=ad.district
AND dm.status=''1''
AND dm.stateid=sm.stateid
INNER JOIN ehis.citymaster c
ON c.citycode=ad.city
AND c.status=''1''
AND c.districtid=dm.districtid
JOIN adt.bedmaster bm
ON bm.bedid = i.bedid
JOIN hr.employee_main_details e
ON e.employeeid = i.admittingdoctor
JOIN adt.leveldetail l
ON l.leveldetailid = bm.leveldetailid
AND l.leveldetailid NOT IN (221,257)
WHERE i.freepatient = 1
AND pm.locationid = 10701
AND i.locationid = 10701
AND i.status NOT IN (7,11)
UNION
SELECT DISTINCT upper (
CASE
WHEN cast(i.attendantaddress AS varchar(30)) IS NULL THEN i.specialnotes
ELSE cast(i.attendantaddress AS varchar(30))
END) controlno,
pm.registrationno,
rp.firstname
||'' ''
||rp.middlename
||'' ''
||rp.lastname AS patientname,
rp.age, (
CASE
WHEN rp.gender=71 THEN ''f''
ELSE ''m''
END ) gender,
ad.address1
||'',
''
||ad.address2
||'',
''
||c.cityname
||'',
''
||sm.statename adress, (
CASE
WHEN ad.residencenumber IS NULL THEN (
CASE
WHEN ad.emergencynumber IS NULL THEN ad.mobilenumber
WHEN ad.emergencynumber IS NOT NULL THEN ad.emergencynumber
WHEN ad.mobilenumber IS NULL THEN ad.emergencynumber
WHEN ad.mobilenumber IS NOT NULL THEN ad.mobilenumber
END)
ELSE ad.residencenumber
END) contactnumber,
i.inpatientno,
bm.bedcode,
i.reasonforadmission,
(
SELECT dt.parametervalue
FROM wards.dischargesummdtls dt
WHERE dt.parammappingid IN
(
SELECT pm.parammappingid
FROM wards.parametermapping pm
WHERE pm.parameterid = 1299)
AND dt.status = 1
AND dt.dischargeno IN
(
SELECT dy.dischargeno
FROM wards.dischargesumm_dync dy
WHERE dy.ipno = i.inpatientno)) diagnosis,
i.dateofadmission,
e.firstname
||'' ''
||e.middlename
||'' ''
||e.lastname AS doctor,
f_getspeciality(i.admittingdoctor) speciality,
f_getemployeename(i.referreddoctor) referreddoctor,
upper(i.wardnurse) recommendedby,
upper(i.housekeeping) emergencycoldcase,
l.leveldetailname
FROM billing.pateintpolicydetails pd
FULL OUTER JOIN billing.patientpolicymaster pm
ON pd.policymasterid = pm.patientpolicymasterid
AND pd.policystatus = 1
JOIN adt.inpatientmaster i
ON i.uhid = pm.registrationno
JOIN registration.patient rp
ON rp.uhid = i.uhid
JOIN registration.addressmaster ad
ON rp.registrationid=ad.registrationid
AND ad.addresstypeid=''2''
AND ad.status=''1''
INNER JOIN ehis.countrymaster cm
ON cm.countrycode=ad.country
INNER JOIN ehis.statemaster sm
ON sm.statecode=ad.state
AND sm.status=''1''
INNER JOIN ehis.districtmaster dm
ON dm.districtcode=ad.district
AND dm.status=''1''
AND dm.stateid=sm.stateid
INNER JOIN ehis.citymaster c
ON c.citycode=ad.city
AND c.status=''1''
AND c.districtid=dm.districtid
JOIN adt.bedmaster bm
ON bm.bedid = i.bedid
JOIN hr.employee_main_details e
ON e.employeeid = i.admittingdoctor
JOIN adt.leveldetail l
ON l.leveldetailid = bm.leveldetailid
AND l.leveldetailid IN (221,257)
WHERE i.freepatient = 1
AND pm.locationid = 10701
AND i.locationid = 10701
AND i.status NOT IN (7,11)'
INSERT @temp
SELECT * FROM OPENQUERY(ahdelwards,@strSQL)
SELECT DISTINCT * FROM @temp ORDER BY 11 ASC
END